如何从结果中获取值?

纳加拉吉M

我如何获取从另一个函数struct返回的a的值Result下面的例子。

#[derive(Debug)]
pub struct Keypair(ed25519_dalek::Keypair);

pub fn keypair_from_seed(seed: &[u8]) -> Result<Keypair, Box<dyn error::Error>> {
    let dalek_keypair = ed25519_dalek::Keypair { secret, public };
    Ok(Keypair(dalek_keypair))
}
fn main(){
  //here seed_bytes is mnemonics
  let sk = keypair_from_seed(&seed_bytes);
  //sk contains the secret key and public key, i want to extract it different secret key & public key
}
编程序

如果你感到很自信

let sk = keypair_from_seed(&seed_bytes).unwrap();

要么

let sk = keypair_from_seed(&seed_bytes).expect("my own failure message");

但是,建议这样进行

if let Ok(sk) = keypair_from_seed(&seed_bytes) {
    // ... use sk ...
} else {
    // ... sk is not available, may be should
    // we warn the user, ask for an alternative ... 
}

或者,如果您想显式处理错误

match keypair_from_seed(&seed_bytes) {
    Ok(sk) => { 
        // ... use sk ...
    },
    Err(e) => {
        // ... sk is not available, and e explains why ...
    },
}

请注意,如果包含这些行的函数也能够返回错误,则可以使用?符号将其传播(如果所返回的错误keypair_from_seed()可转换为函数所返回的错误)

let sk = keypair_from_seed(&seed_bytes)?;

unwrapexpectif letmatch?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章