为什么使用Rust将可变结构传递给函数会导致不可变字段?

为什么使用Rust将可变结构传递给函数会导致不可变字段?,rust,rust-0.8,Rust,Rust 0.8,我正在学习如何在Win8-64上使用0.8。我有一个测试程序,处理参数输入的函数返回一个包含这些参数的结构。效果不错。然后我修改了程序,将&struct传递给函数,现在我得到了一个编译器错误,我正试图将它分配给一个不可变字段 如何向结构传递指针/引用以防止此错误 导致错误的代码(我尝试了一些变体): 函数中结构字段的所有赋值都会导致编译时出错。编译导致的错误示例如下: testli007.rs:240:2: 240:20 error: cannot assign to immutable fie

我正在学习如何在Win8-64上使用0.8。我有一个测试程序,处理参数输入的函数返回一个包含这些参数的结构。效果不错。然后我修改了程序,将&struct传递给函数,现在我得到了一个编译器错误,我正试图将它分配给一个不可变字段

如何向结构传递指针/引用以防止此错误

导致错误的代码(我尝试了一些变体):

函数中结构字段的所有赋值都会导致编译时出错。编译导致的错误示例如下:

testli007.rs:240:2: 240:20 error: cannot assign to immutable field
testli007.rs:240   ocParams.tContinue = (sInput == ~"y");   

在您的职能声明中:

fn fInputParams(mut ocParams : &cParams) {
ocParams
是一个可变变量,包含指向不可变结构的借用指针。您想要的是该结构是可变的,而不是变量。因此,函数的签名应为:

fn fInputParams(ocParams : &mut cParams) {
然后必须将调用本身更改为
fInputParams

fInputParams(&mut ocParams);  // pass a pointer to mutable struct.

非常感谢,我会打勾的。
fInputParams(&mut ocParams);  // pass a pointer to mutable struct.