语法解释:'让secretbox :: Key(ref mut kb)= k;'

时间:2017-03-22 02:57:10

标签: rust

我一直在使用氧化钠来创建一个密码管理器'各种各样的。 文档中的这个特殊例子令我难过:

use sodiumoxide::crypto::secretbox;
use sodiumoxide::crypto::pwhash;

let passwd = b"Correct Horse Battery Staple";
let salt = pwhash::gen_salt();
let mut k = secretbox::Key([0; secretbox::KEYBYTES]);
{
    let secretbox::Key(ref mut kb) = k;
    pwhash::derive_key(kb, passwd, &salt,
                       pwhash::OPSLIMIT_INTERACTIVE,
                       pwhash::MEMLIMIT_INTERACTIVE).unwrap();
}

特别是这一行:

let secretbox::Key(ref mut kb) = k;

我不太了解这个或它正在做什么的语法。如果有人能够向我解释这一行中发生了什么,那就太棒了。感谢。

1 个答案:

答案 0 :(得分:5)

secretbox::Key(ref mut kb)patternsecretbox::Keytuple struct,因此其字段未命名,并用括号括起来。 ref mut kbkb绑定到结构中唯一字段的可变引用。

您也可以这样做:

let kb = &mut k.0;