MST
星途 面试题库

面试题:Rust结构体方法的复杂调用与生命周期

定义一个`User`结构体,包含`name`(`String`类型)和`email`(`String`类型)字段。接着定义一个`UserManager`结构体,它有一个`users`字段,类型是`Vec<User>`。在`UserManager`结构体上实现一个方法`find_user_by_email`,该方法接收一个`&str`类型的`email`参数,返回对应`User`的引用。请确保处理好生命周期问题,并且在`main`函数中展示如何调用这个方法。
14.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
struct User {
    name: String,
    email: String,
}

struct UserManager {
    users: Vec<User>,
}

impl UserManager {
    fn find_user_by_email(&self, email: &str) -> Option<&User> {
        self.users.iter().find(|user| user.email == email)
    }
}

fn main() {
    let user1 = User {
        name: "Alice".to_string(),
        email: "alice@example.com".to_string(),
    };
    let user2 = User {
        name: "Bob".to_string(),
        email: "bob@example.com".to_string(),
    };

    let mut user_manager = UserManager {
        users: vec![user1, user2],
    };

    if let Some(user) = user_manager.find_user_by_email("alice@example.com") {
        println!("Found user: {} - {}", user.name, user.email);
    } else {
        println!("User not found");
    }
}