extern crate uzers; use uzers::os::unix::{GroupExt, UserExt}; use uzers::{Groups, Users, UsersCache}; //use uzers::os::bsd::UserExt as BSDUserExt; extern crate env_logger; fn main() { env_logger::init(); let cache = UsersCache::new(); let current_uid = cache.get_current_uid(); println!("Your UID is {}", current_uid); let you = cache .get_user_by_uid(current_uid) .expect("No entry for current user!"); println!("Your username is {}", you.name().to_string_lossy()); println!("Your shell is {}", you.shell().display()); println!("Your home directory is {}", you.home_dir().display()); // The two fields below are only available on BSD systems. // Linux systems don’t have the fields in their `passwd` structs! //println!("Your password change timestamp is {}", you.password_change_time()); //println!("Your password expiry timestamp is {}", you.password_expire_time()); let primary_group = cache .get_group_by_gid(you.primary_group_id()) .expect("No entry for your primary group!"); println!( "Your primary group has ID {} and name {}", primary_group.gid(), primary_group.name().to_string_lossy() ); if primary_group.members().is_empty() { println!("There are no other members of that group."); } else { for username in primary_group.members() { println!( "User {} is also a member of that group.", username.to_string_lossy() ); } } }