微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Rust中创建一个包含引用字段的新实例?

如何解决如何在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 举报,一经查实,本站将立刻删除。