我正在使用 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();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,rust 编译器认为该tmp变量未被使用。这对我来说似乎很奇怪,因为我将它传递给函数recv。
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();
}
Run Code Online (Sandbox Code Playgroud)
我尝试通过使其可变来玩弄,但这没有帮助。
如果我打印它,警告就会消失。但为什么当我将它用于发送功能时它仍然存在?
因为我将它传递给recv函数。
不,那是/范围tmp之外定义的其他内容。ifelse
你想要什么:
let mut tmp = false;
if n % 2 == 0 {
tmp = true;
} else {
tmp = false;
}
Run Code Online (Sandbox Code Playgroud)
或者:
let tmp;
if n % 2 == 0 {
tmp = true;
} else {
tmp = false;
}
Run Code Online (Sandbox Code Playgroud)
或者:
let tmp = if n % 2 == 0 {
true
} else {
false
};
Run Code Online (Sandbox Code Playgroud)
或者:
let tmp = n % 2 == 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |