diff --git a/compiler/cpp/src/thrift/generate/t_rs_generator.cc b/compiler/cpp/src/thrift/generate/t_rs_generator.cc
index f6b4b6d..77ee906 100644
--- a/compiler/cpp/src/thrift/generate/t_rs_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_rs_generator.cc
@@ -901,7 +901,7 @@
 
   f_gen_
     << indent()
-    << "pub fn write_to_out_protocol(&self, o_prot: &mut TOutputProtocol) -> thrift::Result<()> {"
+    << "pub fn write_to_out_protocol(&self, o_prot: &mut dyn TOutputProtocol) -> thrift::Result<()> {"
     << endl;
   indent_up();
   f_gen_ << indent() << "o_prot.write_i32(*self as i32)" << endl;
@@ -910,7 +910,7 @@
 
   f_gen_
     << indent()
-    << "pub fn read_from_in_protocol(i_prot: &mut TInputProtocol) -> thrift::Result<" << enum_name << "> {"
+    << "pub fn read_from_in_protocol(i_prot: &mut dyn TInputProtocol) -> thrift::Result<" << enum_name << "> {"
     << endl;
   indent_up();
 
@@ -1401,7 +1401,7 @@
   f_gen_
     << indent()
     << visibility_qualifier(struct_type)
-    << "fn write_to_out_protocol(&self, o_prot: &mut TOutputProtocol) -> thrift::Result<()> {"
+    << "fn write_to_out_protocol(&self, o_prot: &mut dyn TOutputProtocol) -> thrift::Result<()> {"
     << endl;
   indent_up();
 
@@ -1433,7 +1433,7 @@
 void t_rs_generator::render_union_sync_write(const string &union_name, t_struct *tstruct) {
   f_gen_
     << indent()
-    << "pub fn write_to_out_protocol(&self, o_prot: &mut TOutputProtocol) -> thrift::Result<()> {"
+    << "pub fn write_to_out_protocol(&self, o_prot: &mut dyn TOutputProtocol) -> thrift::Result<()> {"
     << endl;
   indent_up();
 
@@ -1675,7 +1675,7 @@
   f_gen_
     << indent()
     << visibility_qualifier(struct_type)
-    << "fn read_from_in_protocol(i_prot: &mut TInputProtocol) -> thrift::Result<" << struct_name << "> {"
+    << "fn read_from_in_protocol(i_prot: &mut dyn TInputProtocol) -> thrift::Result<" << struct_name << "> {"
     << endl;
 
   indent_up();
@@ -1797,7 +1797,7 @@
 void t_rs_generator::render_union_sync_read(const string &union_name, t_struct *tstruct) {
   f_gen_
     << indent()
-    << "pub fn read_from_in_protocol(i_prot: &mut TInputProtocol) -> thrift::Result<" << union_name << "> {"
+    << "pub fn read_from_in_protocol(i_prot: &mut dyn TInputProtocol) -> thrift::Result<" << union_name << "> {"
     << endl;
   indent_up();
 
@@ -2206,8 +2206,8 @@
     << " {" << endl;
   indent_up();
 
-  f_gen_ << indent() << "fn i_prot_mut(&mut self) -> &mut TInputProtocol { &mut self._i_prot }" << endl;
-  f_gen_ << indent() << "fn o_prot_mut(&mut self) -> &mut TOutputProtocol { &mut self._o_prot }" << endl;
+  f_gen_ << indent() << "fn i_prot_mut(&mut self) -> &mut dyn TInputProtocol { &mut self._i_prot }" << endl;
+  f_gen_ << indent() << "fn o_prot_mut(&mut self) -> &mut dyn TOutputProtocol { &mut self._o_prot }" << endl;
   f_gen_ << indent() << "fn sequence_number(&self) -> i32 { self._sequence_number }" << endl;
   f_gen_
     << indent()
@@ -2564,7 +2564,7 @@
 
   f_gen_
     << indent()
-    << "fn process(&self, i_prot: &mut TInputProtocol, o_prot: &mut TOutputProtocol) -> thrift::Result<()> {"
+    << "fn process(&self, i_prot: &mut dyn TInputProtocol, o_prot: &mut dyn TOutputProtocol) -> thrift::Result<()> {"
     << endl;
   indent_up();
 
@@ -2609,8 +2609,8 @@
       << "fn " << function_name
       << "(&self, "
       << "incoming_sequence_number: i32, "
-      << "i_prot: &mut TInputProtocol, "
-      << "o_prot: &mut TOutputProtocol) "
+      << "i_prot: &mut dyn TInputProtocol, "
+      << "o_prot: &mut dyn TOutputProtocol) "
       << "-> thrift::Result<()> {"
       << endl;
     indent_up();
@@ -2674,8 +2674,8 @@
     << "<H: " << handler_type << ">"
     << "(handler: &H, "
     << sequence_number_param << ": i32, "
-    << "i_prot: &mut TInputProtocol, "
-    << output_protocol_param << ": &mut TOutputProtocol) "
+    << "i_prot: &mut dyn TInputProtocol, "
+    << output_protocol_param << ": &mut dyn TOutputProtocol) "
     << "-> thrift::Result<()> {"
     << endl;
 
diff --git a/lib/rs/src/autogen.rs b/lib/rs/src/autogen.rs
index 54d4080..6806a08 100644
--- a/lib/rs/src/autogen.rs
+++ b/lib/rs/src/autogen.rs
@@ -29,10 +29,10 @@
 pub trait TThriftClient {
     /// Returns the input protocol used to read serialized Thrift messages
     /// from the Thrift server.
-    fn i_prot_mut(&mut self) -> &mut TInputProtocol;
+    fn i_prot_mut(&mut self) -> &mut dyn TInputProtocol;
     /// Returns the output protocol used to write serialized Thrift messages
     /// to the Thrift server.
-    fn o_prot_mut(&mut self) -> &mut TOutputProtocol;
+    fn o_prot_mut(&mut self) -> &mut dyn TOutputProtocol;
     /// Returns the sequence number of the last message written to the Thrift
     /// server. Returns `0` if no messages have been written. Sequence
     /// numbers should *never* be negative, and this method returns an `i32`
diff --git a/lib/rs/src/errors.rs b/lib/rs/src/errors.rs
index 13be1ee..68cdc9c 100644
--- a/lib/rs/src/errors.rs
+++ b/lib/rs/src/errors.rs
@@ -188,7 +188,7 @@
     /// functions are automatically returned as an `ApplicationError`.
     Application(ApplicationError),
     /// IDL-defined exception structs.
-    User(Box<error::Error + Sync + Send>),
+    User(Box<dyn error::Error + Sync + Send>),
 }
 
 impl Error {
@@ -196,7 +196,7 @@
     ///
     /// Application code **should never** call this method directly.
     pub fn read_application_error_from_in_protocol(
-        i: &mut TInputProtocol,
+        i: &mut dyn TInputProtocol,
     ) -> ::Result<ApplicationError> {
         let mut message = "general remote error".to_owned();
         let mut kind = ApplicationErrorKind::Unknown;
@@ -247,7 +247,7 @@
     /// Application code **should never** call this method directly.
     pub fn write_application_error_to_out_protocol(
         e: &ApplicationError,
-        o: &mut TOutputProtocol,
+        o: &mut dyn TOutputProtocol,
     ) -> ::Result<()> {
         o.write_struct_begin(&TStructIdentifier {
             name: "TApplicationException".to_owned(),
diff --git a/lib/rs/src/lib.rs b/lib/rs/src/lib.rs
index a36ec99..cdd60f0 100644
--- a/lib/rs/src/lib.rs
+++ b/lib/rs/src/lib.rs
@@ -47,6 +47,7 @@
 
 #![crate_type = "lib"]
 #![doc(test(attr(allow(unused_variables), deny(warnings))))]
+#![deny(bare_trait_objects)]
 
 extern crate byteorder;
 extern crate ordered_float;
diff --git a/lib/rs/src/protocol/binary.rs b/lib/rs/src/protocol/binary.rs
index 0920fc4..2069cf9 100644
--- a/lib/rs/src/protocol/binary.rs
+++ b/lib/rs/src/protocol/binary.rs
@@ -249,7 +249,7 @@
 }
 
 impl TInputProtocolFactory for TBinaryInputProtocolFactory {
-    fn create(&self, transport: Box<TReadTransport + Send>) -> Box<TInputProtocol + Send> {
+    fn create(&self, transport: Box<dyn TReadTransport + Send>) -> Box<dyn TInputProtocol + Send> {
         Box::new(TBinaryInputProtocol::new(transport, true))
     }
 }
@@ -453,7 +453,7 @@
 }
 
 impl TOutputProtocolFactory for TBinaryOutputProtocolFactory {
-    fn create(&self, transport: Box<TWriteTransport + Send>) -> Box<TOutputProtocol + Send> {
+    fn create(&self, transport: Box<dyn TWriteTransport + Send>) -> Box<dyn TOutputProtocol + Send> {
         Box::new(TBinaryOutputProtocol::new(transport, true))
     }
 }
diff --git a/lib/rs/src/protocol/compact.rs b/lib/rs/src/protocol/compact.rs
index 334e820..1750bc4 100644
--- a/lib/rs/src/protocol/compact.rs
+++ b/lib/rs/src/protocol/compact.rs
@@ -322,7 +322,7 @@
 }
 
 impl TInputProtocolFactory for TCompactInputProtocolFactory {
-    fn create(&self, transport: Box<TReadTransport + Send>) -> Box<TInputProtocol + Send> {
+    fn create(&self, transport: Box<dyn TReadTransport + Send>) -> Box<dyn TInputProtocol + Send> {
         Box::new(TCompactInputProtocol::new(transport))
     }
 }
@@ -593,7 +593,7 @@
 }
 
 impl TOutputProtocolFactory for TCompactOutputProtocolFactory {
-    fn create(&self, transport: Box<TWriteTransport + Send>) -> Box<TOutputProtocol + Send> {
+    fn create(&self, transport: Box<dyn TWriteTransport + Send>) -> Box<dyn TOutputProtocol + Send> {
         Box::new(TCompactOutputProtocol::new(transport))
     }
 }
diff --git a/lib/rs/src/protocol/mod.rs b/lib/rs/src/protocol/mod.rs
index 1ab1658..2d8513f 100644
--- a/lib/rs/src/protocol/mod.rs
+++ b/lib/rs/src/protocol/mod.rs
@@ -546,14 +546,14 @@
 /// ```
 pub trait TInputProtocolFactory {
     // Create a `TInputProtocol` that reads bytes from `transport`.
-    fn create(&self, transport: Box<TReadTransport + Send>) -> Box<TInputProtocol + Send>;
+    fn create(&self, transport: Box<dyn TReadTransport + Send>) -> Box<dyn TInputProtocol + Send>;
 }
 
 impl<T> TInputProtocolFactory for Box<T>
 where
     T: TInputProtocolFactory + ?Sized,
 {
-    fn create(&self, transport: Box<TReadTransport + Send>) -> Box<TInputProtocol + Send> {
+    fn create(&self, transport: Box<dyn TReadTransport + Send>) -> Box<dyn TInputProtocol + Send> {
         (**self).create(transport)
     }
 }
@@ -577,14 +577,14 @@
 /// ```
 pub trait TOutputProtocolFactory {
     /// Create a `TOutputProtocol` that writes bytes to `transport`.
-    fn create(&self, transport: Box<TWriteTransport + Send>) -> Box<TOutputProtocol + Send>;
+    fn create(&self, transport: Box<dyn TWriteTransport + Send>) -> Box<dyn TOutputProtocol + Send>;
 }
 
 impl<T> TOutputProtocolFactory for Box<T>
 where
     T: TOutputProtocolFactory + ?Sized,
 {
-    fn create(&self, transport: Box<TWriteTransport + Send>) -> Box<TOutputProtocol + Send> {
+    fn create(&self, transport: Box<dyn TWriteTransport + Send>) -> Box<dyn TOutputProtocol + Send> {
         (**self).create(transport)
     }
 }
@@ -926,29 +926,29 @@
 
     #[test]
     fn must_create_usable_input_protocol_from_concrete_input_protocol() {
-        let r: Box<TReadTransport> = Box::new(Cursor::new([0, 1, 2]));
+        let r: Box<dyn TReadTransport> = Box::new(Cursor::new([0, 1, 2]));
         let mut t = TCompactInputProtocol::new(r);
         takes_input_protocol(&mut t)
     }
 
     #[test]
     fn must_create_usable_input_protocol_from_boxed_input() {
-        let r: Box<TReadTransport> = Box::new(Cursor::new([0, 1, 2]));
-        let mut t: Box<TInputProtocol> = Box::new(TCompactInputProtocol::new(r));
+        let r: Box<dyn TReadTransport> = Box::new(Cursor::new([0, 1, 2]));
+        let mut t: Box<dyn TInputProtocol> = Box::new(TCompactInputProtocol::new(r));
         takes_input_protocol(&mut t)
     }
 
     #[test]
     fn must_create_usable_output_protocol_from_concrete_output_protocol() {
-        let w: Box<TWriteTransport> = Box::new(vec![0u8; 10]);
+        let w: Box<dyn TWriteTransport> = Box::new(vec![0u8; 10]);
         let mut t = TCompactOutputProtocol::new(w);
         takes_output_protocol(&mut t)
     }
 
     #[test]
     fn must_create_usable_output_protocol_from_boxed_output() {
-        let w: Box<TWriteTransport> = Box::new(vec![0u8; 10]);
-        let mut t: Box<TOutputProtocol> = Box::new(TCompactOutputProtocol::new(w));
+        let w: Box<dyn TWriteTransport> = Box::new(vec![0u8; 10]);
+        let mut t: Box<dyn TOutputProtocol> = Box::new(TCompactOutputProtocol::new(w));
         takes_output_protocol(&mut t)
     }
 
diff --git a/lib/rs/src/protocol/stored.rs b/lib/rs/src/protocol/stored.rs
index 4fe465f..faa5128 100644
--- a/lib/rs/src/protocol/stored.rs
+++ b/lib/rs/src/protocol/stored.rs
@@ -79,7 +79,7 @@
 /// ```
 // FIXME: implement Debug
 pub struct TStoredInputProtocol<'a> {
-    inner: &'a mut TInputProtocol,
+    inner: &'a mut dyn TInputProtocol,
     message_ident: Option<TMessageIdentifier>,
 }
 
@@ -90,7 +90,7 @@
     /// with service name stripped - that will be passed to
     /// `wrapped.read_message_begin(...)`.
     pub fn new(
-        wrapped: &mut TInputProtocol,
+        wrapped: &mut dyn TInputProtocol,
         message_ident: TMessageIdentifier,
     ) -> TStoredInputProtocol {
         TStoredInputProtocol {
diff --git a/lib/rs/src/server/mod.rs b/lib/rs/src/server/mod.rs
index 3d42891..b719d1b 100644
--- a/lib/rs/src/server/mod.rs
+++ b/lib/rs/src/server/mod.rs
@@ -91,7 +91,7 @@
     /// the response to `o`.
     ///
     /// Returns `()` if the handler was executed; `Err` otherwise.
-    fn process(&self, i: &mut TInputProtocol, o: &mut TOutputProtocol) -> ::Result<()>;
+    fn process(&self, i: &mut dyn TInputProtocol, o: &mut dyn TOutputProtocol) -> ::Result<()>;
 }
 
 /// Convenience function used in generated `TProcessor` implementations to
@@ -99,7 +99,7 @@
 pub fn handle_process_result(
     msg_ident: &TMessageIdentifier,
     res: ::Result<()>,
-    o_prot: &mut TOutputProtocol,
+    o_prot: &mut dyn TOutputProtocol,
 ) -> ::Result<()> {
     if let Err(e) = res {
         let e = match e {
diff --git a/lib/rs/src/server/multiplexed.rs b/lib/rs/src/server/multiplexed.rs
index e433794..3f9bc78 100644
--- a/lib/rs/src/server/multiplexed.rs
+++ b/lib/rs/src/server/multiplexed.rs
@@ -27,7 +27,7 @@
 
 const MISSING_SEPARATOR_AND_NO_DEFAULT: &'static str =
     "missing service separator and no default processor set";
-type ThreadSafeProcessor = Box<TProcessor + Send + Sync>;
+type ThreadSafeProcessor = Box<dyn TProcessor + Send + Sync>;
 
 /// A `TProcessor` that can demux service calls to multiple underlying
 /// Thrift services.
@@ -74,7 +74,7 @@
     pub fn register<S: Into<String>>(
         &mut self,
         service_name: S,
-        processor: Box<TProcessor + Send + Sync>,
+        processor: Box<dyn TProcessor + Send + Sync>,
         as_default: bool,
     ) -> ::Result<()> {
         let mut stored = self.stored.lock().unwrap();
@@ -103,8 +103,8 @@
     fn process_message(
         &self,
         msg_ident: &TMessageIdentifier,
-        i_prot: &mut TInputProtocol,
-        o_prot: &mut TOutputProtocol,
+        i_prot: &mut dyn TInputProtocol,
+        o_prot: &mut dyn TOutputProtocol,
     ) -> ::Result<()> {
         let (svc_name, svc_call) = split_ident_name(&msg_ident.name);
         debug!("routing svc_name {:?} svc_call {}", &svc_name, &svc_call);
@@ -134,7 +134,7 @@
 }
 
 impl TProcessor for TMultiplexedProcessor {
-    fn process(&self, i_prot: &mut TInputProtocol, o_prot: &mut TOutputProtocol) -> ::Result<()> {
+    fn process(&self, i_prot: &mut dyn TInputProtocol, o_prot: &mut dyn TOutputProtocol) -> ::Result<()> {
         let msg_ident = i_prot.read_message_begin()?;
 
         debug!("process incoming msg id:{:?}", &msg_ident);
@@ -259,7 +259,7 @@
     }
 
     impl TProcessor for Service {
-        fn process(&self, _: &mut TInputProtocol, _: &mut TOutputProtocol) -> ::Result<()> {
+        fn process(&self, _: &mut dyn TInputProtocol, _: &mut dyn TOutputProtocol) -> ::Result<()> {
             let res = self
                 .invoked
                 .compare_and_swap(false, true, Ordering::Relaxed);
diff --git a/lib/rs/src/server/threaded.rs b/lib/rs/src/server/threaded.rs
index e15a25a..8f8c082 100644
--- a/lib/rs/src/server/threaded.rs
+++ b/lib/rs/src/server/threaded.rs
@@ -194,7 +194,7 @@
     fn new_protocols_for_connection(
         &mut self,
         stream: TcpStream,
-    ) -> ::Result<(Box<TInputProtocol + Send>, Box<TOutputProtocol + Send>)> {
+    ) -> ::Result<(Box<dyn TInputProtocol + Send>, Box<dyn TOutputProtocol + Send>)> {
         // create the shared tcp stream
         let channel = TTcpChannel::with_stream(stream);
 
@@ -216,8 +216,8 @@
 
 fn handle_incoming_connection<PRC>(
     processor: Arc<PRC>,
-    i_prot: Box<TInputProtocol>,
-    o_prot: Box<TOutputProtocol>,
+    i_prot: Box<dyn TInputProtocol>,
+    o_prot: Box<dyn TOutputProtocol>,
 ) where
     PRC: TProcessor,
 {
diff --git a/lib/rs/src/transport/buffered.rs b/lib/rs/src/transport/buffered.rs
index 87cfeff..b33eb4f 100644
--- a/lib/rs/src/transport/buffered.rs
+++ b/lib/rs/src/transport/buffered.rs
@@ -139,7 +139,7 @@
 
 impl TReadTransportFactory for TBufferedReadTransportFactory {
     /// Create a `TBufferedReadTransport`.
-    fn create(&self, channel: Box<Read + Send>) -> Box<TReadTransport + Send> {
+    fn create(&self, channel: Box<dyn Read + Send>) -> Box<dyn TReadTransport + Send> {
         Box::new(TBufferedReadTransport::new(channel))
     }
 }
@@ -254,7 +254,7 @@
 
 impl TWriteTransportFactory for TBufferedWriteTransportFactory {
     /// Create a `TBufferedWriteTransport`.
-    fn create(&self, channel: Box<Write + Send>) -> Box<TWriteTransport + Send> {
+    fn create(&self, channel: Box<dyn Write + Send>) -> Box<dyn TWriteTransport + Send> {
         Box::new(TBufferedWriteTransport::new(channel))
     }
 }
diff --git a/lib/rs/src/transport/framed.rs b/lib/rs/src/transport/framed.rs
index a009307..98ad1bb 100644
--- a/lib/rs/src/transport/framed.rs
+++ b/lib/rs/src/transport/framed.rs
@@ -121,7 +121,7 @@
 
 impl TReadTransportFactory for TFramedReadTransportFactory {
     /// Create a `TFramedReadTransport`.
-    fn create(&self, channel: Box<Read + Send>) -> Box<TReadTransport + Send> {
+    fn create(&self, channel: Box<dyn Read + Send>) -> Box<dyn TReadTransport + Send> {
         Box::new(TFramedReadTransport::new(channel))
     }
 }
@@ -231,7 +231,7 @@
 
 impl TWriteTransportFactory for TFramedWriteTransportFactory {
     /// Create a `TFramedWriteTransport`.
-    fn create(&self, channel: Box<Write + Send>) -> Box<TWriteTransport + Send> {
+    fn create(&self, channel: Box<dyn Write + Send>) -> Box<dyn TWriteTransport + Send> {
         Box::new(TFramedWriteTransport::new(channel))
     }
 }
diff --git a/lib/rs/src/transport/mod.rs b/lib/rs/src/transport/mod.rs
index a623350..32c0799 100644
--- a/lib/rs/src/transport/mod.rs
+++ b/lib/rs/src/transport/mod.rs
@@ -64,7 +64,7 @@
 /// accepted client connections.
 pub trait TReadTransportFactory {
     /// Create a `TTransport` that wraps a channel over which bytes are to be read.
-    fn create(&self, channel: Box<Read + Send>) -> Box<TReadTransport + Send>;
+    fn create(&self, channel: Box<dyn Read + Send>) -> Box<dyn TReadTransport + Send>;
 }
 
 /// Identifies a transport used by `TOutputProtocol` to send bytes.
@@ -74,7 +74,7 @@
 /// accepted client connections.
 pub trait TWriteTransportFactory {
     /// Create a `TTransport` that wraps a channel over which bytes are to be sent.
-    fn create(&self, channel: Box<Write + Send>) -> Box<TWriteTransport + Send>;
+    fn create(&self, channel: Box<dyn Write + Send>) -> Box<dyn TWriteTransport + Send>;
 }
 
 impl<T> TReadTransport for T where T: Read {}
@@ -87,7 +87,7 @@
 where
     T: TReadTransportFactory + ?Sized,
 {
-    fn create(&self, channel: Box<Read + Send>) -> Box<TReadTransport + Send> {
+    fn create(&self, channel: Box<dyn Read + Send>) -> Box<dyn TReadTransport + Send> {
         (**self).create(channel)
     }
 }
@@ -96,7 +96,7 @@
 where
     T: TWriteTransportFactory + ?Sized,
 {
-    fn create(&self, channel: Box<Write + Send>) -> Box<TWriteTransport + Send> {
+    fn create(&self, channel: Box<dyn Write + Send>) -> Box<dyn TWriteTransport + Send> {
         (**self).create(channel)
     }
 }
@@ -231,7 +231,7 @@
 
     #[test]
     fn must_create_usable_read_channel_from_boxed_read() {
-        let r: Box<Read> = Box::new(Cursor::new([0, 1, 2]));
+        let r: Box<dyn Read> = Box::new(Cursor::new([0, 1, 2]));
         let _ = TBufferedReadTransport::new(r);
     }
 
@@ -243,7 +243,7 @@
 
     #[test]
     fn must_create_usable_write_channel_from_boxed_write() {
-        let w: Box<Write> = Box::new(vec![0u8; 10]);
+        let w: Box<dyn Write> = Box::new(vec![0u8; 10]);
         let _ = TBufferedWriteTransport::new(w);
     }
 
@@ -257,7 +257,7 @@
     #[test]
     fn must_create_usable_read_transport_from_boxed_read() {
         let r = Cursor::new([0, 1, 2]);
-        let mut t: Box<TReadTransport> = Box::new(TBufferedReadTransport::new(r));
+        let mut t: Box<dyn TReadTransport> = Box::new(TBufferedReadTransport::new(r));
         takes_read_transport(&mut t)
     }
 
@@ -271,7 +271,7 @@
     #[test]
     fn must_create_usable_write_transport_from_boxed_write() {
         let w = vec![0u8; 10];
-        let mut t: Box<TWriteTransport> = Box::new(TBufferedWriteTransport::new(w));
+        let mut t: Box<dyn TWriteTransport> = Box::new(TBufferedWriteTransport::new(w));
         takes_write_transport(&mut t)
     }
 
