async fn get_block(client: &Arc>, block_number: U64) -> Result, Box> { let block: Option>; let new_block_number: U64; if block_number == U64::from(0) { block = client.get_block(BlockNumber::Latest).await?; } else { block = client.get_block(block_number).await?; } match block { Some(b) => { if let Some(number) = b.number { new_block_number = number + 1; Ok(Some(BlockAndNumber { block: b, number: new_block_number })) } else { Err("Block number is None".into()) } }, None => { // 块不存在,返回 None Ok(None) }, } } fn main() { let result = get_block(&client, block_number).await?; match result { Ok(Some(block_and_number)) => { }, Ok(None) => { }, Err(e) => { println!("err: {}", e); } } } 各位好,我在get_block里 返回的是result 一个option和一个err,但是 在下面调取的时候,match result {} 我定一个ok 和 err报错,提示result的类型是个Option 理论上应该是result才对,想问我的代码哪里有问题,新手rust,还请各位多多帮助 这段代码有什么问题,怎么改