作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一些存在生命周期问题的使用rust 代码。
let mut sha256 = Sha256::new();
sha256.input_str(input.as_slice());
for i in range(0i,16) {
println!("i == {}, hash == {}", i, sha256.result_str());
let bytes = sha256.result_bytes().as_slice();
sha256.input(bytes);
}
错误是:
$ cargo build && ./target/hello_world asdfasdf
Compiling hello_world v0.1.0 (file:///home/chris/hello_world)
src/hello_world.rs:41:21: 41:42 error: borrowed value does not live long enough
src/hello_world.rs:41 let bytes = sha256.result_bytes().as_slice();
^~~~~~~~~~~~~~~~~~~~~
src/hello_world.rs:39:27: 43:6 note: reference must be valid for the block at 39:26...
src/hello_world.rs:39 for i in range(0i,16) {
src/hello_world.rs:40 println!("i == {}, hash == {}", i, sha256.result_str());
src/hello_world.rs:41 let bytes = sha256.result_bytes().as_slice();
src/hello_world.rs:42 sha256.input(bytes);
src/hello_world.rs:43 }
src/hello_world.rs:41:9: 41:53 note: ...but borrowed value is only valid for the statement at 41:8; consider using a `let` binding to increase its lifetime
src/hello_world.rs:41 let bytes = sha256.result_bytes().as_slice();
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to previous error
Could not compile `hello_world`.
To learn more, run the command again with --verbose.
我怎样才能改变它,并且仍然让它有效地执行?
最佳答案
那是因为 result_bytes()
的结果在该行之后被丢弃,而 as_slice()
正在获取对它的引用。借用检查器不会让它发生。
为了让它工作,你应该这样写:
let mut sha256 = Sha256::new();
sha256.input_str(input.as_slice());
for i in range(0i,16) {
println!("i == {}, hash == {}", i, sha256.result_str());
let bytes = sha256.result_bytes();
sha256.reset();
sha256.input(bytes.as_slice());
}
希望对您有所帮助。
关于rust - 如何在 Rust 中使用 sha256 散列 sha256 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220655/
我是一名优秀的程序员,十分优秀!