我在 Win8-64 上使用 0.8 学习 Rust。我有一个正在处理的测试程序,其中处理参数输入的函数返回了一个包含这些参数的结构。那行得通。然后我更改了程序以将 &struct 传递给函数,现在我得到一个编译器错误,我试图将其分配给不可变字段。
我应该如何将指针/引用传递给结构以防止此错误?
导致错误的代码(我尝试了一些变体):
let mut ocParams : cParams = cParams::new(); //!!!!!! This is the struct passed
fInputParams(&ocParams); // !!!!!!! this is passing the struct
if !ocParams.tContinue {
return;
}
.......
struct cParams {
iInsertMax : i64,
iUpdateMax : i64,
iDeleteMax : i64,
iInstanceMax : i64,
tFirstInstance : bool,
tCreateTables : bool,
tContinue : bool
}
impl cParams {
fn new() -> cParams {
cParams {iInsertMax : -1, iUpdateMax : -1, iDeleteMax : -1, iInstanceMax : -1,
tFirstInstance : false, tCreateTables : false, tContinue : false}
}
}
.....
fn fInputParams(mut ocParams : &cParams) {
ocParams.tContinue = (sInput == ~"y"); // !!!!!! this is one of the error lines
对函数中结构字段的所有赋值都会导致编译时出错。compile 导致的错误示例:
testli007.rs:240:2: 240:20 error: cannot assign to immutable field
testli007.rs:240 ocParams.tContinue = (sInput == ~"y");