【发布时间】:2018-10-18 05:57:12
【问题描述】:
鉴于以下程序:
use std::collections::HashMap;
fn main() {
let mut hm = HashMap::new();
hm.insert(0, 1);
hm.insert(1, 1);
let mut iter = hm.iter();
println!("{:?}", iter.nth(0).expect("Fatal.").0)
}
每次执行代码都会得到不同的输出:
procyclinsur@procyclinsur:~/Documents/Rust/t1$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/t1`
1
procyclinsur@procyclinsur:~/Documents/Rust/t1$ vim src/main.rs
procyclinsur@procyclinsur:~/Documents/Rust/t1$ cargo run
Compiling t1 v0.1.0 (file:///home/procyclinsur/Documents/Rust/t1)
Finished dev [unoptimized + debuginfo] target(s) in 1.12 secs
Running `target/debug/t1`
1
procyclinsur@procyclinsur:~/Documents/Rust/t1$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/t1`
1
procyclinsur@procyclinsur:~/Documents/Rust/t1$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/t1`
0
procyclinsur@procyclinsur:~/Documents/Rust/t1$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/t1`
1
我希望程序的每次运行都看到相同的输出。有谁知道这段代码以这种方式运行的原因?如何让它按预期只输出 0?
【问题讨论】:
-
@Stargateur 已修复!
-
@Shepmaster 没错,该帖子确实回答了我的问题,但它并没有以明显的方式这样做。它的标题并不表示我所指的问题,示例代码或解释也不是。这篇文章对实际问题有更好的描述。除了将其标记为重复之外,应该有更好的方法来解决这个问题吗?
-
这实际上是复制的完美用例。它们充当路标,将搜索不同术语的人们重定向到一组规范的答案。将您的问题标记为重复问题绝对没有不好。
-
否决票是输出为图像,您已修复,因此我已将其删除;谢谢。