You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
eslopfer 548ee49fef docs(check-user-name): fix typo 2 years ago
..
README.md docs(check-user-name): fix typo 2 years ago

README.md

check_user_name

Instructions

Sometimes it is more desirable to catch the failure of some parts of a program instead of just calling panic.

For this exercise you will have to create a tool that manages users' access levels.

You will have to create an AccessLevel enum which could be Guest, Normal, Admin.

You will also have to create a User struct which has:

  • Fields:
    • name: String
    • acessLevel: enum
  • Associated functions:
    • new: which initializes the struct.
    • send_name: which takes only self as argument and returns an Option<&str> with None if the user is a Guest or the name if the AccessLevel has any of the other options.
  • Other functions:
    • check_user_name: which takes a User, calls send_name and returns a tuple with true and the user name if send_name returns the name or false and "Error: User is guest" if not.

Expected Functions and Data Structures

pub enum AccessLevel {}

pub struct User {}

impl User {
  pub fn new(name: String, level: AccessLevel) -> User {}
  pub fn send_name(&self) -> Option<&str> {}
}

pub fn check_user_name(user: &User) -> (bool, &str) {}

Usage

Here is a program to test your function:

use check_user_name::*;

fn main() {
  let user0 = User::new("Didier".to_string(), AccessLevel::Admin);
  println!("{:?}", check_user_name(&user0));

  let user1 = User::new("Mary".to_string(), AccessLevel::Normal);
  println!("{:?}", check_user_name(&user1));

  let user2 = User::new("John".to_string(), AccessLevel::Guest);
  println!("{:?}", check_user_name(&user2));
}

And its output:

$ cargo run
(true, "Didier")
(true, "Mary")
(false, "ERROR: User is guest")
$