Skip to content

Instantly share code, notes, and snippets.

@selfup
Created March 11, 2018 15:47
Show Gist options
  • Save selfup/3de6218cb4cae491375e1d6e7c01d848 to your computer and use it in GitHub Desktop.
Save selfup/3de6218cb4cae491375e1d6e7c01d848 to your computer and use it in GitHub Desktop.
#[derive(Debug)]
struct User {
first_name: &'static str,
last_name: &'static str,
}
impl User {
fn new(first_name: &'static str, last_name: &'static str) -> User {
User {
first_name: first_name,
last_name: last_name,
}
}
}
#[derive(Debug)]
struct State {
users: Vec<User>,
}
impl State {
fn new() -> State {
State { users: vec![] }
}
fn add_user(&mut self, first_name: &'static str, last_name: &'static str) {
self.users.push(User::new(first_name, last_name));
}
fn first(self) -> Option<User> {
if self.users.len() > 0 {
let user: User = User { ..self.users[0] };
return Some(user);
} else {
return None;
}
}
}
fn main() {
let mut state = State::new();
state.add_user("hello", "world");
let first_user = state.first();
match first_user {
Some(user) => println!("{} {}", user.first_name, user.last_name),
None => println!("No user at that index"),
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment