我一直在使用氧化钠来创建各种"密码管理器".文档中的这个特殊例子令我难过:
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();
}
Run Code Online (Sandbox Code Playgroud)
特别是这条线:
let secretbox::Key(ref mut kb) = k;
Run Code Online (Sandbox Code Playgroud)
我不太明白这个或它正在做什么的语法.如果有人能向我解释这一行中发生的事情真是太棒了.谢谢.
secretbox::Key(ref mut kb)是一种模式.secretbox::Key是一个元组结构,因此它的字段是未命名的,并用括号括起来.ref mut kb绑定kb到结构中唯一字段的可变引用.
您也可以这样做:
let kb = &mut k.0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |