diff --git a/lib/core/conf/src/file.rs b/lib/core/conf/src/file.rs
index bbdab08a8c51b8c729efc66244f2622868ab2383..1f778392fcaf82319ed31affdd2f9b5230cb503e 100644
--- a/lib/core/conf/src/file.rs
+++ b/lib/core/conf/src/file.rs
@@ -110,8 +110,7 @@ mod tests {
     #[test]
     fn load_conf_file_v1() -> Result<(), DursConfFileError> {
         let profile_path = PathBuf::from("./test/v1/");
-        save_old_conf(PathBuf::from(profile_path.clone()))
-            .map_err(DursConfFileError::WriteError)?;
+        save_old_conf(profile_path.clone()).map_err(DursConfFileError::WriteError)?;
         let conf = load_conf_from_file(profile_path.clone())?;
         assert_eq!(
             conf.modules()
diff --git a/lib/core/conf/src/keypairs/cli.rs b/lib/core/conf/src/keypairs/cli.rs
index 215432ace39868b064cc616d86e30945efb37a02..39ca0d3041641bc88e3cb09bcbe9a4fe8bdd2a1e 100644
--- a/lib/core/conf/src/keypairs/cli.rs
+++ b/lib/core/conf/src/keypairs/cli.rs
@@ -215,13 +215,13 @@ mod tests {
 
     use unwrap::unwrap;
 
-    static BASE58_SEED_INIT: &'static str = "4iXXx5GgRkZ85BVPwn8vFXvztdXAAa5yB573ErcAnngA";
-    static BASE58_PUB_INIT: &'static str = "otDgSpKvKAPPmE1MUYxc3UQ3RtEnKYz4iGD3BmwKPzM";
+    static BASE58_SEED_INIT: &str = "4iXXx5GgRkZ85BVPwn8vFXvztdXAAa5yB573ErcAnngA";
+    static BASE58_PUB_INIT: &str = "otDgSpKvKAPPmE1MUYxc3UQ3RtEnKYz4iGD3BmwKPzM";
 
-    static BASE58_SEED_TEST: &'static str = "ELjDWGPyCGMuhr7R7H2aip6UJA9qLRepmK77pcD41UqQ";
-    static BASE58_PUB_TEST: &'static str = "6sewkaNWyEMqkEa2PVRWrDb3hxWtjPdUSB1zXVCqhdWV";
-    static SALT_TEST: &'static str = "testsalt";
-    static PASSWORD_TEST: &'static str = "testpassword";
+    static BASE58_SEED_TEST: &str = "ELjDWGPyCGMuhr7R7H2aip6UJA9qLRepmK77pcD41UqQ";
+    static BASE58_PUB_TEST: &str = "6sewkaNWyEMqkEa2PVRWrDb3hxWtjPdUSB1zXVCqhdWV";
+    static SALT_TEST: &str = "testsalt";
+    static PASSWORD_TEST: &str = "testpassword";
 
     fn setup_user_password_input() -> MockUserPasswordInput {
         let mut stdin_mock = MockUserPasswordInput::new();
@@ -299,7 +299,6 @@ mod tests {
         assert_eq!(
             result_key_pairs
                 .member_keypair
-                .clone()
                 .expect("conf: member_keypair must have a value")
                 .seed()
                 .clone(),
@@ -364,7 +363,6 @@ mod tests {
         assert_eq!(
             key_pairs
                 .member_keypair
-                .clone()
                 .expect("conf: keypair must have a value")
                 .seed()
                 .clone(),
diff --git a/lib/dubp/block-doc/src/block/v10.rs b/lib/dubp/block-doc/src/block/v10.rs
index 206f6db8229a9768f28f8f781e9e653698a63146..44f4472ff1977a3e7d8cee6f7ad408d8915ae2c5 100644
--- a/lib/dubp/block-doc/src/block/v10.rs
+++ b/lib/dubp/block-doc/src/block/v10.rs
@@ -668,9 +668,7 @@ IdtyTimestamp: 97401-0000003821911909F98519CC773D2D3E5CFE3D5DBB39F4F4FF33B96B4D4
 IdtySignature: QncUVXxZ2NfARjdJOn6luILvDuG1NuK9qSoaU4CST2Ij8z7oeVtEgryHl+EXOjSe6XniALsCT0gU8wtadcA/Cw==
 CertTimestamp: 106669-000003682E6FE38C44433DCE92E8B2A26C69B6D7867A2BAED231E788DDEF4251
 UmseG2XKNwKcY8RFi6gUCT91udGnnNmSh7se10J1jeRVlwf+O2Tyb2Cccot9Dt7BO4+Kx2P6vFJB3oVGGHMxBA==").expect("Fail to parse cert1");
-        let cert1 = match cert1 {
-            CertificationDocument::V10(cert_v10) => cert_v10,
-        };
+        let CertificationDocument::V10(cert1) = cert1;
 
         let TransactionDocument::V10(tx1) = TransactionDocumentParser::parse("Version: 10
 Type: Transaction
@@ -710,7 +708,7 @@ a9PHPuSfw7jW8FRQHXFsGi/bnLjbtDnTYvEVgUC9u0WlR7GVofa+Xb+l5iy6NwuEXiwvueAkf08wPVY8
             number: BlockNumber(107_984),
             pow_min: 88,
             time: 1_522_685_861,
-            median_time: 1522683184,
+            median_time: 1_522_683_184,
             members_count: 896,
             monetary_mass: 140_469_765,
             unit_base: 0,
@@ -819,9 +817,7 @@ CertTS: 74077-0000022816648B2F7801E059F67CCD0C023FF0ED84459D52C70494D74DDCC6F6
 gvaZ1QnJf8FjjRDJ0cYusgpBgQ8r0NqEz39BooH6DtIrgX+WTeXuLSnjZDl35VCBjokvyjry+v0OkTT8FKpABA==",
         )
         .expect("Fail to parse ms1");
-        let ms1 = match ms1 {
-            MembershipDocument::V10(ms_v10) => ms_v10,
-        };
+        let MembershipDocument::V10(ms1) = ms1;
 
         let TransactionDocument::V10(tx1) = TransactionDocumentParser::parse(
             "Version: 10
diff --git a/lib/dubp/block-doc/src/parser.rs b/lib/dubp/block-doc/src/parser.rs
index eb64513fe55f7153dbe737ff2d61605462ace4ba..ae4ef334ef620990f12615b5c2f60fab2399a3ae 100644
--- a/lib/dubp/block-doc/src/parser.rs
+++ b/lib/dubp/block-doc/src/parser.rs
@@ -173,11 +173,11 @@ mod tests {
         assert_eq!(
             BlockDocument::V10(BlockDocumentV10 {
                 version: 10,
-                nonce: 10200000037108,
+                nonce: 10_200_000_037_108,
                 number: BlockNumber(7),
                 pow_min: 70,
-                time: 1488987677,
-                median_time: 1488987394,
+                time: 1_488_987_677,
+                median_time: 1_488_987_394,
                 members_count: 59,
                 monetary_mass: 59000,
                 unit_base: 0,
@@ -294,11 +294,11 @@ mod tests {
 
         let expected_block = BlockDocument::V10(BlockDocumentV10 {
                 version: 10,
-                nonce: 10100000033688,
+                nonce: 10_100_000_033_688,
                 number: BlockNumber(52),
                 pow_min: 74,
-                time: 1488990898,
-                median_time: 1488990117,
+                time: 1_488_990_898,
+                median_time: 1_488_990_117,
                 members_count: 59,
                 monetary_mass: 59000,
                 unit_base: 0,
diff --git a/lib/dubp/user-docs/src/documents/transaction.rs b/lib/dubp/user-docs/src/documents/transaction.rs
index 8b9425af9bc96fb41078715ef338ad38c07bc19d..ac5c319941b40e3fe1e088945bb969db7664119c 100644
--- a/lib/dubp/user-docs/src/documents/transaction.rs
+++ b/lib/dubp/user-docs/src/documents/transaction.rs
@@ -481,8 +481,8 @@ mod tests {
             currency: "duniter_unit_test_currency",
             blockstamp: &block,
             locktime: &0,
-            issuers: &vec![pubkey],
-            inputs: &vec![TransactionInputV10::D(
+            issuers: &[pubkey],
+            inputs: &[TransactionInputV10::D(
                 TxAmount(10),
                 TxBase(0),
                 PubKey::Ed25519(unwrap!(
@@ -491,11 +491,11 @@ mod tests {
                 )),
                 BlockNumber(0),
             )],
-            unlocks: &vec![TransactionInputUnlocksV10 {
+            unlocks: &[TransactionInputUnlocksV10 {
                 index: 0,
                 unlocks: vec![TransactionUnlockProof::Sig(0)],
             }],
-            outputs: &vec![TransactionOutputV10::from_str(
+            outputs: &[TransactionOutputV10::from_str(
                 "10:0:SIG(FD9wujR7KABw88RyKEGBYRLz8PA6jzVCbcBAsrBXBqSa)",
             )
             .expect("fail to parse output !")],
@@ -534,8 +534,8 @@ mod tests {
             currency: "g1",
             blockstamp: &block,
             locktime: &0,
-            issuers: &vec![pubkey],
-            inputs: &vec![TransactionInputV10::T(
+            issuers: &[pubkey],
+            inputs: &[TransactionInputV10::T(
                 TxAmount(950),
                 TxBase(0),
                 unwrap!(
@@ -546,10 +546,10 @@ mod tests {
                 ),
                 OutputIndex(1),
             )],
-            unlocks: &vec![
+            unlocks: &[
                 TransactionInputUnlocksV10::from_str("0:SIG(0)").expect("fail to parse unlock !")
             ],
-            outputs: &vec![
+            outputs: &[
                 TransactionOutputV10::from_str(
                     "30:0:SIG(38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE)",
                 )
diff --git a/lib/dubp/user-docs/src/documents/transaction/v10.rs b/lib/dubp/user-docs/src/documents/transaction/v10.rs
index 9f1c7666ccf4a9680c973e6ec41026ab24a14f15..0f4dbabba1170870c62c916d7d197e30d80469f3 100644
--- a/lib/dubp/user-docs/src/documents/transaction/v10.rs
+++ b/lib/dubp/user-docs/src/documents/transaction/v10.rs
@@ -574,13 +574,13 @@ pub struct TransactionDocumentV10Builder<'a> {
     /// Locktime
     pub locktime: &'a u64,
     /// Transaction Document issuers.
-    pub issuers: &'a Vec<PubKey>,
+    pub issuers: &'a [PubKey],
     /// Transaction inputs.
-    pub inputs: &'a Vec<TransactionInputV10>,
+    pub inputs: &'a [TransactionInputV10],
     /// Inputs unlocks.
-    pub unlocks: &'a Vec<TransactionInputUnlocksV10>,
+    pub unlocks: &'a [TransactionInputUnlocksV10],
     /// Transaction ouputs.
-    pub outputs: &'a Vec<TransactionOutputV10>,
+    pub outputs: &'a [TransactionOutputV10],
     /// Transaction comment
     pub comment: &'a str,
     /// Transaction hash
@@ -598,10 +598,10 @@ impl<'a> TransactionDocumentV10Builder<'a> {
             currency: self.currency.to_string(),
             blockstamp: *self.blockstamp,
             locktime: *self.locktime,
-            issuers: self.issuers.clone(),
-            inputs: self.inputs.clone(),
-            unlocks: self.unlocks.clone(),
-            outputs: self.outputs.clone(),
+            issuers: self.issuers.to_vec(),
+            inputs: self.inputs.to_vec(),
+            unlocks: self.unlocks.to_vec(),
+            outputs: self.outputs.to_vec(),
             comment: String::from(self.comment),
             signatures,
             hash: self.hash,
@@ -734,8 +734,8 @@ mod tests {
             currency: "duniter_unit_test_currency",
             blockstamp: &block,
             locktime: &0,
-            issuers: &vec![pubkey],
-            inputs: &vec![TransactionInputV10::D(
+            issuers: &[pubkey],
+            inputs: &[TransactionInputV10::D(
                 TxAmount(10),
                 TxBase(0),
                 PubKey::Ed25519(unwrap!(
@@ -744,11 +744,11 @@ mod tests {
                 )),
                 BlockNumber(0),
             )],
-            unlocks: &vec![TransactionInputUnlocksV10 {
+            unlocks: &[TransactionInputUnlocksV10 {
                 index: 0,
                 unlocks: vec![TransactionUnlockProof::Sig(0)],
             }],
-            outputs: &vec![TransactionOutputV10::from_str(
+            outputs: &[TransactionOutputV10::from_str(
                 "10:0:SIG(FD9wujR7KABw88RyKEGBYRLz8PA6jzVCbcBAsrBXBqSa)",
             )
             .expect("fail to parse output !")],
@@ -787,8 +787,8 @@ mod tests {
             currency: "g1",
             blockstamp: &block,
             locktime: &0,
-            issuers: &vec![pubkey],
-            inputs: &vec![TransactionInputV10::T(
+            issuers: &[pubkey],
+            inputs: &[TransactionInputV10::T(
                 TxAmount(950),
                 TxBase(0),
                 unwrap!(
@@ -799,10 +799,10 @@ mod tests {
                 ),
                 OutputIndex(1),
             )],
-            unlocks: &vec![
+            unlocks: &[
                 TransactionInputUnlocksV10::from_str("0:SIG(0)").expect("fail to parse unlock !")
             ],
-            outputs: &vec![
+            outputs: &[
                 TransactionOutputV10::from_str(
                     "30:0:SIG(38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE)",
                 )
diff --git a/lib/dubp/user-docs/src/parsers/transactions.rs b/lib/dubp/user-docs/src/parsers/transactions.rs
index bd553a8ba048b19f6e7373cb48cebabdb64e0435..776dd5a341aaa914af13f43c2b33f2c77a6b883b 100644
--- a/lib/dubp/user-docs/src/parsers/transactions.rs
+++ b/lib/dubp/user-docs/src/parsers/transactions.rs
@@ -120,18 +120,18 @@ mod tests {
             )
             .expect("Fail to parse blockstamp"),
             locktime: &0,
-            issuers: &vec![PubKey::Ed25519(
+            issuers: &[PubKey::Ed25519(
                 ed25519::PublicKey::from_base58("2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ")
                     .expect("Fail to parse issuer !"),
             )],
-            inputs: &vec![TransactionInputV10::from_str(
+            inputs: &[TransactionInputV10::from_str(
                 "1000:0:D:2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:1",
             )
             .expect("Fail to parse inputs")],
-            unlocks: &vec![
+            unlocks: &[
                 TransactionInputUnlocksV10::from_str("0:SIG(0)").expect("Fail to parse unlocks")
             ],
-            outputs: &vec![
+            outputs: &[
                 TransactionOutputV10::from_str(
                     "1:0:SIG(Com8rJukCozHZyFao6AheSsfDQdPApxQRnz7QYFf64mm)",
                 )
diff --git a/lib/dubp/wot/lib.rs b/lib/dubp/wot/lib.rs
index 927c7a3f61a182586f48c1aa3b0fb3a8aabc8843..e865cebcf4e9feb6c65ece228e68e9283f573fe1 100644
--- a/lib/dubp/wot/lib.rs
+++ b/lib/dubp/wot/lib.rs
@@ -58,6 +58,7 @@ mod tests {
     ///
     /// Clone and file tests are not included in this generic test and should be done in
     /// the implementation test.
+    #[allow(clippy::cognitive_complexity)]
     pub fn generic_wot_test<W>()
     where
         W: WebOfTrust + Sync,
@@ -123,6 +124,7 @@ mod tests {
         wot.rem_link(WotId(0), WotId(3));
         wot.rem_link(WotId(0), WotId(4));
 
+
         // false when not linked + test out of bounds
         assert_eq!(wot.has_link(WotId(0), WotId(6)), HasLinkResult::Link(false));
         assert_eq!(
diff --git a/lib/dunp/network-documents/src/url.rs b/lib/dunp/network-documents/src/url.rs
index 0a69aa6938362dd46adae4d227ed73ef8fdb6663..c2b723616c649d0644eae3d722e7692e55edec3a 100644
--- a/lib/dunp/network-documents/src/url.rs
+++ b/lib/dunp/network-documents/src/url.rs
@@ -243,7 +243,7 @@ mod tests {
         println!("{:?}", addrs);*/
 
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 SocketAddr::V4(SocketAddrV4::new(ip4(), 80)),
                 SocketAddr::V6(SocketAddrV6::new(ip6(), 80, 0, 0)),
             ],
@@ -260,7 +260,7 @@ mod tests {
         let url = Url::Url(url::Url::parse("wss://g1.duniter.org")?);
 
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 SocketAddr::V6(SocketAddrV6::new(ip6(), 443, 0, 0)),
                 SocketAddr::V4(SocketAddrV4::new(ip4(), 443)),
             ],
@@ -287,7 +287,7 @@ mod tests {
         );
 
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 SocketAddr::V6(SocketAddrV6::new(ip6(), 20901, 0, 0)),
                 SocketAddr::V4(SocketAddrV4::new(ip4(), 20901)),
             ],
@@ -304,7 +304,7 @@ mod tests {
         let url = Url::Url(url::Url::parse("ws://g1.duniter.org:20901")?);
 
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 SocketAddr::V6(SocketAddrV6::new(ip6(), 20901, 0, 0)),
                 SocketAddr::V4(SocketAddrV4::new(ip4(), 20901)),
             ],
diff --git a/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs b/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs
index 3bb1888ca45a8eda043e49fd47a3fd1fd767aac6..c70cb88c4157d399bdf1157cca4835df87e99d85 100644
--- a/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs
+++ b/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs
@@ -559,6 +559,7 @@ mod tests {
         );
         assert_eq!(vec![(TreeNodeId(2), blockstamps[2])], tree.get_sheets());
         assert_eq!(None, tree.get_free_node_id());
+        #[allow(clippy::needless_range_loop)]
         for i in 0..=2 {
             assert_eq!(
                 Some(TreeNodeId(i)),
@@ -581,6 +582,7 @@ mod tests {
         let mut tree = ForkTree::default();
         let blockstamps: Vec<Blockstamp> = dubp_blocks_tests_tools::mocks::generate_blockstamps(10);
         tree.insert_new_node(blockstamps[0], None, true);
+        #[allow(clippy::needless_range_loop)]
         for i in 1..10 {
             tree.insert_new_node(blockstamps[i], Some(TreeNodeId(i - 1)), true);
         }
@@ -670,6 +672,7 @@ mod tests {
 
         // Fill tree with MAX_DEPTH nodes
         tree.insert_new_node(blockstamps[0], None, true);
+        #[allow(clippy::needless_range_loop)]
         for i in 1..*DEFAULT_FORK_WINDOW_SIZE {
             tree.insert_new_node(blockstamps[i], Some(TreeNodeId(i - 1)), true);
         }
@@ -707,6 +710,7 @@ mod tests {
 
         // Fill tree with MAX_DEPTH nodes
         tree.insert_new_node(blockstamps[0], None, true);
+        #[allow(clippy::needless_range_loop)]
         for i in 1..*DEFAULT_FORK_WINDOW_SIZE {
             tree.insert_new_node(blockstamps[i], Some(TreeNodeId(i - 1)), true);
         }
diff --git a/lib/modules-lib/bc-db-reader/src/indexes/identities.rs b/lib/modules-lib/bc-db-reader/src/indexes/identities.rs
index ca1d11729bcde5c791d94d60b58decc2cb97b7bd..48fae0f611fc7f0e3f2f7bd1a31d0ee31840e9b1 100644
--- a/lib/modules-lib/bc-db-reader/src/indexes/identities.rs
+++ b/lib/modules-lib/bc-db-reader/src/indexes/identities.rs
@@ -328,7 +328,7 @@ mod test {
             by_pubkey: None,
         };
         assert!(slice_same_elems(
-            &vec![mock_identities[2].clone(), mock_identities[3].clone()],
+            &[mock_identities[2].clone(), mock_identities[3].clone()],
             &db.r(|db_r| get_identities(db_r, filters, BlockNumber(5)))?
         ));
 
diff --git a/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs b/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs
index c25bd734ca76330ae1672148db1402708f13b0a8..770ad29b1f2ea8942afd24bf850826756fed4c4e 100644
--- a/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs
+++ b/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs
@@ -130,10 +130,10 @@ mod test {
         );
 
         // Insert FORK_WINDOW_SIZE blocks
-        for i in 1..*DEFAULT_FORK_WINDOW_SIZE {
+        for blockstamp in blockstamps.iter().take(*DEFAULT_FORK_WINDOW_SIZE).skip(1) {
             assert_eq!(
                 Vec::<Blockstamp>::with_capacity(0),
-                insert_new_head_block(&mut fork_tree, blockstamps[i])?
+                insert_new_head_block(&mut fork_tree, *blockstamp)?
             );
         }
 
@@ -168,10 +168,10 @@ mod test {
         let mut fork_tree = ForkTree::default();
 
         // Insert 4 main blocks
-        for i in 0..4 {
+        for blockstamp in blockstamps.iter().take(4) {
             assert_eq!(
                 Vec::<Blockstamp>::with_capacity(0),
-                insert_new_head_block(&mut fork_tree, blockstamps[i])?
+                insert_new_head_block(&mut fork_tree, *blockstamp)?
             );
         }
 
@@ -195,7 +195,7 @@ mod test {
         // Check tree state
         assert_eq!(5, fork_tree.size());
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 (TreeNodeId(3), blockstamps[3]),
                 (TreeNodeId(4), fork_blockstamp)
             ],
@@ -215,7 +215,7 @@ mod test {
         // Check tree state
         assert_eq!(6, fork_tree.size());
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 (TreeNodeId(3), blockstamps[3]),
                 (TreeNodeId(5), fork_blockstamp_2)
             ],
@@ -223,17 +223,17 @@ mod test {
         ));
 
         // Insert FORK_WINDOW_SIZE blocks
-        for i in 4..*DEFAULT_FORK_WINDOW_SIZE {
+        for blockstamp in blockstamps.iter().take(*DEFAULT_FORK_WINDOW_SIZE).skip(4) {
             assert_eq!(
                 Vec::<Blockstamp>::with_capacity(0),
-                insert_new_head_block(&mut fork_tree, blockstamps[i])?
+                insert_new_head_block(&mut fork_tree, *blockstamp)?
             );
         }
 
         // Check tree state
         assert_eq!(*DEFAULT_FORK_WINDOW_SIZE + 2, fork_tree.size());
         assert!(durs_common_tests_tools::collections::slice_same_elems(
-            &vec![
+            &[
                 (
                     TreeNodeId(*DEFAULT_FORK_WINDOW_SIZE + 1),
                     blockstamps[*DEFAULT_FORK_WINDOW_SIZE - 1]
diff --git a/lib/modules/blockchain/bc-db-writer/src/indexes/transactions.rs b/lib/modules/blockchain/bc-db-writer/src/indexes/transactions.rs
index bdaa05e5cb0f7bbc6ba112caa3a2bfbeaa748c7d..dae4f724deb75fa5cce609aa182bbc42aa385d39 100644
--- a/lib/modules/blockchain/bc-db-writer/src/indexes/transactions.rs
+++ b/lib/modules/blockchain/bc-db-writer/src/indexes/transactions.rs
@@ -242,15 +242,15 @@ mod tests {
             currency: "g1",
             blockstamp: &block,
             locktime: &0,
-            issuers: &vec![pubkey],
-            inputs: &vec![TransactionInputV10::from_str(
+            issuers: &[pubkey],
+            inputs: &[TransactionInputV10::from_str(
                 "1000:0:D:2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:1",
             )
             .expect("fail to parse input !")],
-            unlocks: &vec![
+            unlocks: &[
                 TransactionInputUnlocksV10::from_str("0:SIG(0)").expect("fail to parse unlock !")
             ],
-            outputs: &vec![
+            outputs: &[
                 TransactionOutputV10::from_str(
                     "1:0:SIG(Com8rJukCozHZyFao6AheSsfDQdPApxQRnz7QYFf64mm)",
                 )
@@ -284,7 +284,7 @@ mod tests {
                 &mut w,
                 &SourceAmount(TxAmount(1000), TxBase(0)),
                 BlockNumber(1),
-                &vec![tx_doc.issuers()[0], tortue_pubkey],
+                &[tx_doc.issuers()[0], tortue_pubkey],
                 false,
             )?;
             Ok(WriteResp::from(w))
diff --git a/lib/modules/blockchain/blockchain/src/dubp/check/local/tx_doc.rs b/lib/modules/blockchain/blockchain/src/dubp/check/local/tx_doc.rs
index 731c5c4696f78284d1351f43787df94a10b05a4b..ee6c0e2747eea4192622d72759ea900f6a181f3d 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/check/local/tx_doc.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/check/local/tx_doc.rs
@@ -137,10 +137,10 @@ mod tests {
 
     fn tx_builder<'a>(
         blockstamp: &'a Blockstamp,
-        issuers: &'a Vec<PubKey>,
-        inputs: &'a Vec<TransactionInputV10>,
-        unlocks: &'a Vec<TransactionInputUnlocksV10>,
-        outputs: &'a Vec<TransactionOutputV10>,
+        issuers: &'a [PubKey],
+        inputs: &'a [TransactionInputV10],
+        unlocks: &'a [TransactionInputUnlocksV10],
+        outputs: &'a [TransactionOutputV10],
     ) -> TransactionDocumentV10Builder<'a> {
         TransactionDocumentV10Builder {
             currency: "duniter_unit_test_currency",
diff --git a/lib/modules/ws2p-v1-legacy/src/lib.rs b/lib/modules/ws2p-v1-legacy/src/lib.rs
index dfc25f0d3a8a4f56055d8544732a3e295711a2ec..4a2d6b41615bf8e9dffbd3754cfa5a5bb6f25c62 100644
--- a/lib/modules/ws2p-v1-legacy/src/lib.rs
+++ b/lib/modules/ws2p-v1-legacy/src/lib.rs
@@ -927,13 +927,13 @@ mod tests {
         let json_block = json!({
             "fork": false,
             "version": 10,
-            "nonce": 10500000059239 as u64,
-            "number": 109966,
+            "nonce": 10_500_000_059_239 as u64,
+            "number": 109_966,
             "powMin": 88,
-            "time": 1523300656,
-            "medianTime": 1523295259,
+            "time": 1_523_300_656,
+            "medianTime": 1_523_295_259,
             "membersCount": 933,
-            "monetaryMass": 146881563,
+            "monetaryMass": 146_881_563,
             "unitbase": 0,
             "issuersCount": 44,
             "issuersFrame": 221,
diff --git a/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs b/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
index 9dcbf101c97b68a6d09bcca48489a0ab15bd09c7..aad4409680bd5377b098e2e7bdf66d5fb447e675 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
@@ -119,7 +119,7 @@ mod tests {
         let cert_doc = create_cert_doc();
         let response = WS2Pv2ReqRes {
             id: 29,
-            body: WS2Pv2ReqResBody::WotPool(vec![cert_doc.clone(), cert_doc.clone()], vec![]),
+            body: WS2Pv2ReqResBody::WotPool(vec![cert_doc, cert_doc], vec![]),
         };
         test_ws2p_message(WS2Pv2MessagePayload::ReqRes(response));
     }
diff --git a/lib/modules/ws2p/ws2p/tests/connection_negociation.rs b/lib/modules/ws2p/ws2p/tests/connection_negociation.rs
index 417cc0d4f8182e51583d20ebf92e567b8626b7e9..030e6ea7d0571e2a74b7a12cb2eab4760c3da1f4 100644
--- a/lib/modules/ws2p/ws2p/tests/connection_negociation.rs
+++ b/lib/modules/ws2p/ws2p/tests/connection_negociation.rs
@@ -33,8 +33,8 @@ use std::sync::Mutex;
 use std::thread;
 use std::time::Duration;
 
-static PORT: &'static u16 = &10899;
-static TIMEOUT_IN_MS: &'static u64 = &30_000;
+static PORT: &u16 = &10899;
+static TIMEOUT_IN_MS: &u64 = &30_000;
 
 // Empty mutex used to ensure that only one test runs at a time
 static MUTEX: Lazy<Mutex<()>> = Lazy::new(|| Mutex::new(()));
@@ -107,7 +107,7 @@ fn test_connection_negociation_denial() {
     let client_service_channel = mpsc::channel();
 
     // launch client controller
-    let server_node_clone = server_node.clone();
+    let server_node_clone = server_node;
     let client_service_sender = client_service_channel.0.clone();
     thread::spawn(move || {
         connect_to_ws2p_v2_endpoint(
@@ -307,7 +307,7 @@ fn get_controller(
     if let Ok(OrchestratorMsg::ControllerSender(controller_sender)) =
         orchestrator_receiver.recv_timeout(Duration::from_millis(*TIMEOUT_IN_MS))
     {
-        return controller_sender;
+        controller_sender
     } else {
         panic!("Not receive client controller sender");
     }
diff --git a/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs b/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs
index 2b84391ab4a93f5b55ba83ab141b36022fa848ef..7f5c4dcd74f0b04644bb713cc0c42803aad952ec 100644
--- a/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs
+++ b/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs
@@ -32,18 +32,16 @@ pub fn first_g1_tx_doc() -> TransactionDocument {
         )
         .expect("Fail to parse blockstamp"),
         locktime: &0,
-        issuers: &vec![PubKey::Ed25519(
+        issuers: &[PubKey::Ed25519(
             ed25519::PublicKey::from_base58("2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ")
                 .expect("Fail to parse issuer !"),
         )],
-        inputs: &vec![TransactionInputV10::from_str(
+        inputs: &[TransactionInputV10::from_str(
             "1000:0:D:2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:1",
         )
         .expect("Fail to parse inputs")],
-        unlocks: &vec![
-            TransactionInputUnlocksV10::from_str("0:SIG(0)").expect("Fail to parse unlocks")
-        ],
-        outputs: &vec![
+        unlocks: &[TransactionInputUnlocksV10::from_str("0:SIG(0)").expect("Fail to parse unlocks")],
+        outputs: &[
             TransactionOutputV10::from_str("1:0:SIG(Com8rJukCozHZyFao6AheSsfDQdPApxQRnz7QYFf64mm)")
                 .expect("Fail to parse outputs"),
             TransactionOutputV10::from_str(
diff --git a/lib/tools/json-pest-parser/src/lib.rs b/lib/tools/json-pest-parser/src/lib.rs
index 9b2fd8db8c991a99747b90f4ec92c4f69fcd8237..ea384a10697093f8590529e956cd55ef1de7cc23 100644
--- a/lib/tools/json-pest-parser/src/lib.rs
+++ b/lib/tools/json-pest-parser/src/lib.rs
@@ -481,6 +481,24 @@ mod tests {
         assert!(parse_json_string(json_string).is_err());
     }
 
+    fn test_parse_json_string_check_object_type(
+        json_value: &JSONValue<
+            std::hash::BuildHasherDefault<std::collections::hash_map::DefaultHasher>,
+        >,
+    ) {
+        assert!(json_value.is_object());
+        assert!(!json_value.is_array());
+        assert!(!json_value.is_str());
+        assert!(!json_value.is_number());
+        assert!(!json_value.is_bool());
+        assert!(!json_value.is_null());
+        assert_eq!(None, json_value.to_array());
+        assert_eq!(None, json_value.to_str());
+        assert_eq!(None, json_value.to_f64());
+        assert_eq!(None, json_value.to_u64());
+        assert_eq!(None, json_value.to_bool());
+    }
+
     #[test]
     fn test_parse_json_string() {
         let json_string = "{
@@ -502,17 +520,7 @@ mod tests {
             "{\"name\":\"toto\",\"legalAge\":true,\"ratio\":0.5,\"age\":25,\"friends\":[\"titi\",\"tata\"],\"car\":null}"
         );
 
-        assert!(json_value.is_object());
-        assert!(!json_value.is_array());
-        assert!(!json_value.is_str());
-        assert!(!json_value.is_number());
-        assert!(!json_value.is_bool());
-        assert!(!json_value.is_null());
-        assert_eq!(None, json_value.to_array());
-        assert_eq!(None, json_value.to_str());
-        assert_eq!(None, json_value.to_f64());
-        assert_eq!(None, json_value.to_u64());
-        assert_eq!(None, json_value.to_bool());
+        test_parse_json_string_check_object_type(&json_value);
 
         let json_object = json_value.to_object().expect("safe unwrap");