【发布时间】:2021-12-15 04:21:01
【问题描述】:
我们都知道使用全局变量会导致细微的错误。我需要将 Python 程序迁移到 Rust,尽可能保持算法完整。一旦我证明了 Python-Rust 等价性,就有机会调试和更改逻辑以更好地适应 Rust。这是一个使用全局变量的简单 Python 程序,后面是我不成功的 Rust 版本。
# global variable
a = 15
# function to perform addition
def add():
global a
a += 100
# function to perform subtraction
def subtract():
global a
a -= 100
# Using a global through functions
print("Initial value of a = ", a)
add()
print("a after addition = ", a)
subtract()
print("a after subtraction = ", a)
这是一个运行的 Rust 程序,但我无法获取闭包来更新所谓的全局变量。
fn fmain() {
// global variable
let mut a = 15;
// perform addition
let add = || {
let mut _name = a;
// name += 100; // the program won't compile if this is uncommented
};
call_once(add);
// perform subtraction
let subtract = || {
let mut _name = a;
// name -= 100; // the program won't compile if this is uncommented
};
call_once(subtract);
// Using a global through functions
println!("Initial value of a = {}", a);
add();
println!("a after addition = {}", a);
subtract();
println!("a after subtraction = {}", a);
}
fn main() {
fmain();
}
fn call_once<F>(f: F)
where
F: FnOnce(),
{
f();
}
我的请求:在 Rust 中重新创建 Python 逻辑。
【问题讨论】:
标签: rust closures global-variables