如何解决如何在Rust中创建一个包含引用字段的新实例?
我正在编写一个与数据库通信的应用程序。我认为new
中的Repository
方法会将结构成员conn
初始化为以下代码中MysqLConnection::establish(...)
的引用。
struct Repository<'a> {
conn: &'a MysqLConnection,}
impl<'a> Repository<'a> {
pub fn new() -> Self {
Self {
conn: &MysqLConnection::establish(...)
}
}
pub fn new_with_connection(conn: &'a MysqLConnection) -> Self {
Self {
conn
}
}
}
fn main() {
// do something...
}
但是,尝试构建应用程序时出现错误。
error[E0515]: cannot return value referencing temporary value
--> src/main.rs:7:9
|
7 | / Self {
8 | | conn: &MysqLConnection::establish(...)
| | ------------------------------- temporary value created here
9 | | }
| |_________^ returns a value referencing data owned by the current function
我从the book中学到了一个函数不能返回悬挂的引用,但是在这种情况下我找不到避免它的方法。我可以在将conn
保留为引用类型的同时,在new
方法中为conn
分配引用吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。