pub struct Passwd {
pub name: String,
pub passwd: Option<String>,
pub uid: u32,
pub gid: u32,
pub gecos: Option<String>,
pub dir: String,
pub shell: String,
}Expand description
The main struct for the library, a safe version
of the POSIX struct passwd
There are 2 ways to construct a Passwd instance (other
than assigning fields by hand). You can look up a user account
by username with Passwd::from_name(String), or by uid with
Passwd::from_uid(u32).
There is a shortcut function, Passwd::current_user(), which is just
short for Passwd::from_uid(unsafe { libc::getuid() } as u32).
Fields§
§name: String§passwd: Option<String>§uid: u32§gid: u32§gecos: Option<String>§dir: String§shell: StringImplementations§
Source§impl Passwd
impl Passwd
Sourcepub fn from_name(name: &str) -> Result<Option<Passwd>>
pub fn from_name(name: &str) -> Result<Option<Passwd>>
Looks up the username and returns a Passwd with the user’s values, if the user is found
This is Result<Option<>> because the operation to convert a rust String to a cstring could fail
§Example
use pwd::Passwd;
let pwd = Passwd::from_name("bob")?;
if let Some(passwd) = pwd {
println!("uid is {}", passwd.uid);
}Sourcepub fn from_uid(uid: u32) -> Option<Passwd>
pub fn from_uid(uid: u32) -> Option<Passwd>
Looks up the uid and returns a Passwd with the user’s values, if the user is found
§Example
use libc::getuid;
use pwd::Passwd;
let uid = unsafe { getuid() };
let pwd = Passwd::from_uid(uid as u32);
if let Some(passwd) = pwd {
println!("username is {}", passwd.name);
}Sourcepub fn current_user() -> Option<Passwd>
pub fn current_user() -> Option<Passwd>
Shortcut for Passwd::from_uid(libc::getuid() as u32), so see the docs for that constructor
§Example
use pwd::Passwd;
let pwd = Passwd::current_user();
if let Some(passwd) = pwd {
println!("username is {}", passwd.name);
}