这是我用于 Snake 程序的结构 Area
:
struct Area {
max_x: usize,
max_y: usize,
arr: Vec<Vec<&'static str>>
}
下面是使用结构体 Area
中的 arr
属性的函数:
fn refresh(area: &Area) {
println!("{:?}", area.arr)
}
由于它只需要结构中的一个属性,因此我希望参数可以是该命名属性,这样我就不必编写太多内容。它看起来像这样(这会产生错误):
fn refresh(array: &Area.arr) {
println!("{:?}", array)
}
是否有任何解决方法可以做类似的事情?
最佳答案
是的,您可以像这样更改refresh
函数的签名
fn refresh(area_arr: &Vec<Vec<&'static str>>) {
println!("{:?}", area_arr)
}
然后你可以这样调用它
refresh(&your_area_instance.arr);
这是完整的代码示例
struct Area {
max_x: usize,
max_y: usize,
arr: Vec<Vec<&'static str>>
}
fn main() {
let area_instance = Area {
max_x: 20,
max_y: 20,
arr: vec![
vec![&"test1_1", &"test1_2"],
vec![&"test2_1", &"test2_2"],
]
};
refresh(&area_instance.arr);
}
fn refresh(area_arr: &Vec<Vec<&'static str>>) {
println!("{:?}", area_arr)
}
和一个Playground link .
关于rust - 有没有办法将结构体的属性指定为函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66938270/