编译器认为布尔变量未被使用
Compiler thinks boolean variable is unused
我正在研究 Rust 的会话类型,我有一个非常简单的函数可以执行以下操作:
fn srv(c: Chan<(), Server>){
let (c, n) = c.recv();
let tmp = false;
if n % 2 == 0 {
let tmp = true;
} else {
let tmp = false;
}
let c = c.send(tmp);
let (c, s) = c.recv();
println!("server side: {}", s);
c.close();
}
当我尝试编译它时,rust 编译器认为 tmp
变量未被使用。
这对我来说似乎很奇怪,因为我将它传递给 recv
函数。
warning: unused variable: `tmp`
--> src/main.rs:25:13
|
25 | let tmp = false;
| ^^^ help: if this is intentional, prefix it with an underscore: `_tmp`
我尝试通过使其可变来玩弄它,但这没有帮助。
如果我打印它,警告就会消失。但是为什么当我用它来发送功能时它甚至在那里?
since I am passing it to the recv function.
不,那是在 if
/else
范围之外定义的另一个 tmp
。
你想要什么:
let mut tmp = false;
if n % 2 == 0 {
tmp = true;
} else {
tmp = false;
}
或:
let tmp;
if n % 2 == 0 {
tmp = true;
} else {
tmp = false;
}
或:
let tmp = if n % 2 == 0 {
true
} else {
false
};
或:
let tmp = n % 2 == 0;
我正在研究 Rust 的会话类型,我有一个非常简单的函数可以执行以下操作:
fn srv(c: Chan<(), Server>){
let (c, n) = c.recv();
let tmp = false;
if n % 2 == 0 {
let tmp = true;
} else {
let tmp = false;
}
let c = c.send(tmp);
let (c, s) = c.recv();
println!("server side: {}", s);
c.close();
}
当我尝试编译它时,rust 编译器认为 tmp
变量未被使用。
这对我来说似乎很奇怪,因为我将它传递给 recv
函数。
warning: unused variable: `tmp`
--> src/main.rs:25:13
|
25 | let tmp = false;
| ^^^ help: if this is intentional, prefix it with an underscore: `_tmp`
我尝试通过使其可变来玩弄它,但这没有帮助。
如果我打印它,警告就会消失。但是为什么当我用它来发送功能时它甚至在那里?
since I am passing it to the recv function.
不,那是在 if
/else
范围之外定义的另一个 tmp
。
你想要什么:
let mut tmp = false;
if n % 2 == 0 {
tmp = true;
} else {
tmp = false;
}
或:
let tmp;
if n % 2 == 0 {
tmp = true;
} else {
tmp = false;
}
或:
let tmp = if n % 2 == 0 {
true
} else {
false
};
或:
let tmp = n % 2 == 0;