Repository: gakonst/ethers-rs
Pull request #1058 (2022-03-17 20:30:00)

Examples/watch_block: show how to retrieve block metadata
## Motivation

I was searching how to get the timestamp and block number from this example and it turns out I need to make another call, so I'm showing this in the example so ppl can find it more easily.




Patch:
diff --git a/ethers-core/src/macros/ethers_crate.rs b/ethers-core/src/macros/ethers_crate.rs
index 70497494..bdc3be12 100644
--- a/ethers-core/src/macros/ethers_crate.rs
+++ b/ethers-core/src/macros/ethers_crate.rs
@@ -69,9 +69,18 @@ pub fn determine_ethers_crates() -> (&'static str, &'static str, &'static str) {
         .and_then(|metadata| {
             metadata.root_package().and_then(|pkg| {
                 let sub_crates = Some(("ethers_core", "ethers_contract", "ethers_providers"));
-                if pkg.name == "ethers-contract" {
-                    // Note(mattsse): this is super hacky but required in order to compile the tests
-                    // in the `ethers-contract` crate
+
+                // Note(mattsse): this is super hacky but required in order to compile and test
+                // ethers' internal crates
+                if [
+                    "ethers-contract",
+                    "ethers-derive-eip712",
+                    "ethers-signers",
+                    "ethers-middleware",
+                    "ethers-solc",
+                ]
+                .contains(&pkg.name.as_str())
+                {
                     return sub_crates
                 }
 
diff --git a/ethers-etherscan/src/account.rs b/ethers-etherscan/src/account.rs
index 5aa9932a..47cecfd9 100644
--- a/ethers-etherscan/src/account.rs
+++ b/ethers-etherscan/src/account.rs
@@ -601,7 +601,7 @@ mod tests {
 
             let balances = client
                 .get_ether_balance_multi(
-                    &vec![&"0x58eB28A67731c570Ef827C365c89B5751F9E6b0a".parse().unwrap()],
+                    &[&"0x58eB28A67731c570Ef827C365c89B5751F9E6b0a".parse().unwrap()],
                     None,
                 )
                 .await;
diff --git a/ethers-etherscan/src/source_tree.rs b/ethers-etherscan/src/source_tree.rs
index 5e0ef18a..49becbe2 100644
--- a/ethers-etherscan/src/source_tree.rs
+++ b/ethers-etherscan/src/source_tree.rs
@@ -57,7 +57,7 @@ mod tests {
                 },
             ],
         };
-        st.write_to(&tempdir.path()).unwrap();
+        st.write_to(tempdir.path()).unwrap();
         let written_paths = read_dir(tempdir.path()).unwrap();
         let paths: Vec<PathBuf> =
             written_paths.into_iter().filter_map(|x| x.ok()).map(|x| x.path()).collect();
@@ -83,7 +83,7 @@ mod tests {
                 },
             ],
         };
-        st.write_to(&tempdir.path()).unwrap();
+        st.write_to(tempdir.path()).unwrap();
         let written_paths = read_dir(tempdir.path()).unwrap();
         let paths: Vec<PathBuf> =
             written_paths.into_iter().filter_map(|x| x.ok()).map(|x| x.path()).collect();
diff --git a/examples/watch_blocks.rs b/examples/watch_blocks.rs
index 7e075857..53895540 100644
--- a/examples/watch_blocks.rs
+++ b/examples/watch_blocks.rs
@@ -8,7 +8,8 @@ async fn main() -> eyre::Result<()> {
     let provider = Provider::new(ws).interval(Duration::from_millis(2000));
     let mut stream = provider.watch_blocks().await?.take(5);
     while let Some(block) = stream.next().await {
-        dbg!(block);
+        let block = provider.get_block(block).await?.unwrap();
+        println!("Ts: {:?}, block number: {} -> {:?}",block.timestamp,block.number.unwrap(),block.hash.unwrap());
     }
 
     Ok(())


Test patch:
diff --git a/ethers-contract/tests/abigen.rs b/ethers-contract/tests/abigen.rs
index 80f5616c..9017633d 100644
--- a/ethers-contract/tests/abigen.rs
+++ b/ethers-contract/tests/abigen.rs
@@ -382,7 +382,7 @@ fn can_handle_underscore_numeric() {
             _100pct(string)
         ]"#
     );
-    let call = _100PctCall("message".to_string());
+    let _call = _100PctCall("message".to_string());
 
     let provider = Arc::new(Provider::new(MockProvider::new()));
     let contract = Test::new(Address::default(), Arc::clone(&provider));
diff --git a/ethers-providers/tests/provider.rs b/ethers-providers/tests/provider.rs
index 54129843..a4123055 100644
--- a/ethers-providers/tests/provider.rs
+++ b/ethers-providers/tests/provider.rs
@@ -1,5 +1,5 @@
 #![cfg(not(target_arch = "wasm32"))]
-use ethers_providers::{Http, Middleware, Provider, RINKEBY};
+use ethers_providers::{Http, Middleware, Provider};
 use std::{convert::TryFrom, time::Duration};
 
 #[cfg(not(feature = "celo"))]
@@ -9,6 +9,7 @@ mod eth_tests {
         types::{Address, BlockId, TransactionRequest, H256},
         utils::Ganache,
     };
+    use ethers_providers::RINKEBY;
 
     #[tokio::test]
     async fn non_existing_data_works() {