rust 如何将一个数字传递给web3.eth().block()?

r1zhe5dt  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在使用rust-web3 crate连接以太坊节点,并通过块号(或块高度)获取关于块的信息。

use web3;
use web3::types::{BlockId, BlockNumber, U64};

# [tokio::main]

async fn main() -> web3::Result<()> {
    let transport = web3::transports::Http::new(WEB3_URL)?;
    let web3 = web3::Web3::new(transport);

    web3.eth().block(BlockId::Number(BlockNumber::Number(U64([42]))));
    Ok(())
}

有没有更简单的方法将42传递给web3.eth().block()
现在我使用两个枚举和U64结构来生成一个编译器可以接受的变量。我是rust的新手,我想我遗漏了一个可以简化它的语言的重要概念。

yqlxgs2m

yqlxgs2m1#

这里有一个impl From<U64> for BlockId(源代码),因此可以稍微缩短调用:

web3.eth().block(U64([42]).into());

相关问题