MST

星途 面试题库

面试题:Rust结构体生命周期在复杂场景中的应用

考虑一个场景,有一个结构体 `Database`,它持有一个连接池 `connections`,连接池是一个 `Vec` 类型,每个连接是 `Connection` 结构体实例。`Connection` 结构体又包含一个 `ConnectionInfo` 结构体实例,`ConnectionInfo` 中含有一个字符串切片用于记录连接的地址信息。请正确定义这些结构体及其生命周期标注,并编写一个函数从 `Database` 中获取一个连接的地址信息并返回。你需要处理好所有可能的生命周期相关问题,如借用检查等。
21.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义ConnectionInfo结构体,包含连接地址信息
struct ConnectionInfo<'a> {
    address: &'a str,
}

// 定义Connection结构体,包含ConnectionInfo实例
struct Connection<'a> {
    info: ConnectionInfo<'a>,
}

// 定义Database结构体,持有连接池
struct Database<'a> {
    connections: Vec<Connection<'a>>,
}

// 定义函数从Database中获取一个连接的地址信息
fn get_connection_address<'a>(db: &'a Database<'a>) -> Option<&'a str> {
    db.connections.get(0).map(|conn| &conn.info.address)
}