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: String
Implementations§
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);
}