gpt4 book ai didi

rust - 从另一个模块 : field of struct is private 在 vec 中打印值

转载 作者:行者123 更新时间:2023-12-03 11:33:11 25 4
gpt4 key购买 nike

我无法从模块中的 Vec 打印值,您能帮忙吗?
下面是模块中函数的内容:

pub struct Author {
_id: i32,
name: String,
country: String
}

pub fn get_saved_records() -> Result<Vec<Author>,Error>{
let mut client = Client::connect("postgresql://***:***@localhost/****",NoTls)?;
let records = client.query("SELECT * FROM author",&[])?;
let mut the_records : Vec<Author> = vec![];
for record in records{
let author = Author {
_id: record.get(0),
name: record.get(1),
country: record.get(2),
};
the_records.push(author);
}


Ok(the_records)
}
这是我调用 get_saved_records() 函数的主文件:
match db::get_saved_records(&mut conn){
Ok(records) => {
for record in records{
println!("{}",record.name);
}

},
Err(_) => println!("No record found")
}
我收到错误消息:字段 name结构 db::Author是私有(private)的。
谢谢你。

最佳答案

结构的成员需要声明 pub以便直接访问。
在这里,只有 name成员是可访问的。

pub struct Author {
_id: i32,
pub name: String,
country: String
}
请注意,结构在拥有它的同时公开是有意义的
成员私有(private)。
这确保了封装:结构的成员只能访问
来自其实现的方法(以及模块中的周围代码)。
当然,这些方法也可以公开或私有(private)。

关于rust - 从另一个模块 : field of struct is private 在 vec 中打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63742823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com