diff --git a/src/http_server.rs b/src/http_server.rs
index 44c9a0fd579e928e4bb07b704547ceb8de7b3fbf..53d47eef64913497fde9729c552e5500b66754cd 100644
--- a/src/http_server.rs
+++ b/src/http_server.rs
@@ -299,13 +299,13 @@ fn get_replicasets_info(
 
         let replicaset_id = instance.replicaset_id;
         let mut is_leader = false;
-        let mut replicaset_uuid = Default::default();
+        let mut replicaset_uuid = String::new();
         let mut tier = instance.tier.clone();
         if let Some(replicaset) = replicasets.get(&replicaset_id) {
             is_leader = replicaset.current_master_id == instance.instance_id;
-            replicaset_uuid = replicaset.replicaset_uuid.clone();
+            replicaset_uuid.clone_from(&replicaset.replicaset_uuid);
             debug_assert_eq!(replicaset.tier, instance.tier);
-            tier = replicaset.tier.clone();
+            tier.clone_from(&replicaset.tier);
         }
 
         let mut http_address = String::new();
@@ -313,8 +313,8 @@ fn get_replicasets_info(
         let mut mem_usable: u64 = 0u64;
         let mut mem_used: u64 = 0u64;
         if let Some(data) = instances_props.get(&instance.raft_id) {
-            http_address = data.httpd_address.clone();
-            version = data.version.clone();
+            http_address.clone_from(&data.httpd_address);
+            version.clone_from(&data.version);
             mem_usable = data.mem_usable;
             mem_used = data.mem_used;
         }
diff --git a/src/rpc/join.rs b/src/rpc/join.rs
index a972861c48223012ef66ef423476f16449307113..3f6f784c645e7e1f9e5307a56d2be8cf91de7c0f 100644
--- a/src/rpc/join.rs
+++ b/src/rpc/join.rs
@@ -217,7 +217,7 @@ pub fn build_instance(
         .expect("storage should not fail")
         + 1;
     let instance_id = instance_id
-        .map(Clone::clone)
+        .cloned()
         .unwrap_or_else(|| choose_instance_id(raft_id, storage));
     let replicaset_id = match replicaset_id {
         Some(replicaset_id) => replicaset_id.clone(),
diff --git a/src/tarantool.rs b/src/tarantool.rs
index 71b65e68c92a14751f0a1bd28da3dbb0116dfefb..d80d0bef9f3070ff11d6cd2148ac349312fc6946 100644
--- a/src/tarantool.rs
+++ b/src/tarantool.rs
@@ -225,7 +225,7 @@ impl Cfg {
     }
 
     pub fn set_core_parameters(&mut self, config: &PicodataConfig) -> Result<(), Error> {
-        self.log = config.instance.log.destination.clone();
+        self.log.clone_from(&config.instance.log.destination);
         self.log_level = Some(config.instance.log_level() as _);
 
         self.wal_dir = config.instance.data_dir();
diff --git a/src/to_rmpv_named.rs b/src/to_rmpv_named.rs
index a2397a2c996693b8638869f9f8dadf55e9e4326e..513d892e2f892fc0e7f7a5d949f64ec5eb5a3a51 100644
--- a/src/to_rmpv_named.rs
+++ b/src/to_rmpv_named.rs
@@ -131,13 +131,13 @@ impl ser::Serializer for RmpvNamedSerializer {
     }
 
     #[inline]
-    fn serialize_newtype_struct<T: ?Sized>(
+    fn serialize_newtype_struct<T>(
         self,
         name: &'static str,
         value: &T,
     ) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         if name == rmpv::MSGPACK_EXT_STRUCT_NAME {
             let mut ext_se = ExtSerializer::new();
@@ -150,7 +150,7 @@ impl ser::Serializer for RmpvNamedSerializer {
     }
 
     #[inline]
-    fn serialize_newtype_variant<T: ?Sized>(
+    fn serialize_newtype_variant<T>(
         self,
         _name: &'static str,
         _idx: u32,
@@ -158,7 +158,7 @@ impl ser::Serializer for RmpvNamedSerializer {
         value: &T,
     ) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Ok(Value::Map(vec![(
             Value::from(variant),
@@ -172,9 +172,9 @@ impl ser::Serializer for RmpvNamedSerializer {
     }
 
     #[inline(always)]
-    fn serialize_some<T: ?Sized>(self, value: &T) -> Result<Self::Ok, Self::Error>
+    fn serialize_some<T>(self, value: &T) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         value.serialize(self)
     }
@@ -386,13 +386,13 @@ impl ser::Serializer for &mut ExtSerializer {
     }
 
     #[cold]
-    fn serialize_newtype_struct<T: ?Sized>(
+    fn serialize_newtype_struct<T>(
         self,
         _name: &'static str,
         _value: &T,
     ) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Err(<Error as ser::Error>::custom(
             "expected tuple, received newtype_struct",
@@ -400,7 +400,7 @@ impl ser::Serializer for &mut ExtSerializer {
     }
 
     #[cold]
-    fn serialize_newtype_variant<T: ?Sized>(
+    fn serialize_newtype_variant<T>(
         self,
         _name: &'static str,
         _idx: u32,
@@ -408,7 +408,7 @@ impl ser::Serializer for &mut ExtSerializer {
         _value: &T,
     ) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Err(<Error as ser::Error>::custom(
             "expected tuple, received newtype_variant",
@@ -423,9 +423,9 @@ impl ser::Serializer for &mut ExtSerializer {
     }
 
     #[cold]
-    fn serialize_some<T: ?Sized>(self, _value: &T) -> Result<Self::Ok, Self::Error>
+    fn serialize_some<T>(self, _value: &T) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Err(<Error as ser::Error>::custom(
             "expected tuple, received some",
@@ -508,9 +508,9 @@ impl ser::SerializeTuple for &mut ExtSerializer {
     type Error = Error;
 
     #[inline]
-    fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         match self.fields_se {
             Some(ref mut se) => value.serialize(&mut *se),
@@ -677,20 +677,20 @@ impl ser::Serializer for &mut ExtFieldSerializer {
     }
 
     #[cold]
-    fn serialize_newtype_struct<T: ?Sized>(
+    fn serialize_newtype_struct<T>(
         self,
         _name: &'static str,
         _value: &T,
     ) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Err(<Error as ser::Error>::custom(
             "expected i8 and bytes, received newtype_struct",
         ))
     }
 
-    fn serialize_newtype_variant<T: ?Sized>(
+    fn serialize_newtype_variant<T>(
         self,
         _name: &'static str,
         _idx: u32,
@@ -698,7 +698,7 @@ impl ser::Serializer for &mut ExtFieldSerializer {
         _value: &T,
     ) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Err(<Error as ser::Error>::custom(
             "expected i8 and bytes, received newtype_variant",
@@ -713,9 +713,9 @@ impl ser::Serializer for &mut ExtFieldSerializer {
     }
 
     #[cold]
-    fn serialize_some<T: ?Sized>(self, _value: &T) -> Result<Self::Ok, Self::Error>
+    fn serialize_some<T>(self, _value: &T) -> Result<Self::Ok, Self::Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         Err(<Error as ser::Error>::custom(
             "expected i8 and bytes, received some",
@@ -863,9 +863,9 @@ impl ser::SerializeSeq for SerializeVec {
     type Error = Error;
 
     #[inline]
-    fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         self.vec.push(to_rmpv_named(value)?);
         Ok(())
@@ -882,9 +882,9 @@ impl ser::SerializeTuple for SerializeVec {
     type Error = Error;
 
     #[inline]
-    fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         ser::SerializeSeq::serialize_element(self, value)
     }
@@ -900,9 +900,9 @@ impl ser::SerializeTupleStruct for SerializeVec {
     type Error = Error;
 
     #[inline]
-    fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         ser::SerializeSeq::serialize_element(self, value)
     }
@@ -918,9 +918,9 @@ impl ser::SerializeTupleVariant for SerializeTupleVariant {
     type Error = Error;
 
     #[inline]
-    fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         self.vec.push(to_rmpv_named(value)?);
         Ok(())
@@ -940,17 +940,17 @@ impl ser::SerializeMap for DefaultSerializeMap {
     type Error = Error;
 
     #[inline(always)]
-    fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<(), Error>
+    fn serialize_key<T>(&mut self, key: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         self.next_key = Some(to_rmpv_named(key)?);
         Ok(())
     }
 
-    fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_value<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         // Panic because this indicates a bug in the program rather than an
         // expected failure.
@@ -973,9 +973,9 @@ impl ser::SerializeStruct for DefaultSerializeMap {
     type Error = Error;
 
     #[inline]
-    fn serialize_field<T: ?Sized>(&mut self, key: &'static str, value: &T) -> Result<(), Error>
+    fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         self.map.push((to_rmpv_named(key)?, to_rmpv_named(value)?));
         Ok(())
@@ -992,9 +992,9 @@ impl ser::SerializeStructVariant for SerializeStructVariant {
     type Error = Error;
 
     #[inline]
-    fn serialize_field<T: ?Sized>(&mut self, key: &'static str, value: &T) -> Result<(), Error>
+    fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Error>
     where
-        T: ser::Serialize,
+        T: ?Sized + ser::Serialize,
     {
         self.map.push((to_rmpv_named(key)?, to_rmpv_named(value)?));
         Ok(())
diff --git a/src/traft/network.rs b/src/traft/network.rs
index 08ecc56fd289515e394d0acee06322f3f0a793e8..a8a6a97bebdbdf9653a2ca857f13e12762eb933a 100644
--- a/src/traft/network.rs
+++ b/src/traft/network.rs
@@ -12,6 +12,7 @@ use crate::traft::error::Error;
 use crate::traft::RaftId;
 use crate::traft::Result;
 use crate::unwrap_ok_or;
+#[cfg(debug_assertions)]
 use crate::util::NoYieldsGuard;
 use ::raft::prelude as raft;
 use ::tarantool::fiber;