pub struct LAEnvironmentMechanismUserPassword { /* private fields */ }Expand description
Password or passcode LAEnvironment mechanism details.
Implementations§
Source§impl LAEnvironmentMechanismUserPassword
impl LAEnvironmentMechanismUserPassword
Sourcepub fn is_usable(&self) -> Result<bool>
pub fn is_usable(&self) -> Result<bool>
Whether the mechanism is currently usable for authentication.
§Errors
Returns an error if the Swift bridge rejects the request.
Examples found in repository?
examples/10_environment.rs (line 52)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let environment = match LAEnvironment::current_user() {
9 Ok(environment) => environment,
10 Err(error) => {
11 println!("environment APIs require macOS 15+: {error}");
12 return Ok(());
13 }
14 };
15
16 let notifications = Arc::new(AtomicUsize::new(0));
17 let registration = environment.add_observer({
18 let notifications = Arc::clone(¬ifications);
19 move |environment: &LAEnvironment, old_state: &LAEnvironmentState| {
20 let current_count = environment
21 .state()
22 .and_then(|state| state.all_mechanisms().map(|items| items.len()))
23 .unwrap_or_default();
24 let previous_count = old_state
25 .all_mechanisms()
26 .map(|items| items.len())
27 .unwrap_or_default();
28 println!(
29 "environment changed: {previous_count} -> {current_count} mechanisms"
30 );
31 notifications.fetch_add(1, Ordering::Relaxed);
32 }
33 })?;
34
35 let state = environment.state()?;
36 println!("all mechanisms: {}", state.all_mechanisms()?.len());
37
38 if let Some(biometry) = state.biometry()? {
39 println!(
40 "biometry: {:?}, enrolled={}, usable={}, icon={}",
41 biometry.biometry_type()?,
42 biometry.is_enrolled()?,
43 biometry.is_usable()?,
44 biometry.icon_system_name()?
45 );
46 }
47
48 if let Some(user_password) = state.user_password()? {
49 println!(
50 "user password: set={}, usable={}, label={}",
51 user_password.is_set()?,
52 user_password.is_usable()?,
53 user_password.localized_name()?
54 );
55 }
56
57 for companion in state.companions()? {
58 println!(
59 "companion {:?}: usable={}, state-hash-bytes={}",
60 companion.companion_type()?,
61 companion.is_usable()?,
62 companion.state_hash()?.map_or(0, |hash| hash.len())
63 );
64 }
65
66 environment.remove_observer(®istration)?;
67 println!(
68 "observer notifications seen so far: {}",
69 notifications.load(Ordering::Relaxed)
70 );
71 println!("✅ environment smoke OK");
72 Ok(())
73}Sourcepub fn localized_name(&self) -> Result<String>
pub fn localized_name(&self) -> Result<String>
Localized display name such as Password.
§Errors
Returns an error if the Swift bridge rejects the request.
Examples found in repository?
examples/10_environment.rs (line 53)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let environment = match LAEnvironment::current_user() {
9 Ok(environment) => environment,
10 Err(error) => {
11 println!("environment APIs require macOS 15+: {error}");
12 return Ok(());
13 }
14 };
15
16 let notifications = Arc::new(AtomicUsize::new(0));
17 let registration = environment.add_observer({
18 let notifications = Arc::clone(¬ifications);
19 move |environment: &LAEnvironment, old_state: &LAEnvironmentState| {
20 let current_count = environment
21 .state()
22 .and_then(|state| state.all_mechanisms().map(|items| items.len()))
23 .unwrap_or_default();
24 let previous_count = old_state
25 .all_mechanisms()
26 .map(|items| items.len())
27 .unwrap_or_default();
28 println!(
29 "environment changed: {previous_count} -> {current_count} mechanisms"
30 );
31 notifications.fetch_add(1, Ordering::Relaxed);
32 }
33 })?;
34
35 let state = environment.state()?;
36 println!("all mechanisms: {}", state.all_mechanisms()?.len());
37
38 if let Some(biometry) = state.biometry()? {
39 println!(
40 "biometry: {:?}, enrolled={}, usable={}, icon={}",
41 biometry.biometry_type()?,
42 biometry.is_enrolled()?,
43 biometry.is_usable()?,
44 biometry.icon_system_name()?
45 );
46 }
47
48 if let Some(user_password) = state.user_password()? {
49 println!(
50 "user password: set={}, usable={}, label={}",
51 user_password.is_set()?,
52 user_password.is_usable()?,
53 user_password.localized_name()?
54 );
55 }
56
57 for companion in state.companions()? {
58 println!(
59 "companion {:?}: usable={}, state-hash-bytes={}",
60 companion.companion_type()?,
61 companion.is_usable()?,
62 companion.state_hash()?.map_or(0, |hash| hash.len())
63 );
64 }
65
66 environment.remove_observer(®istration)?;
67 println!(
68 "observer notifications seen so far: {}",
69 notifications.load(Ordering::Relaxed)
70 );
71 println!("✅ environment smoke OK");
72 Ok(())
73}Sourcepub fn icon_system_name(&self) -> Result<String>
pub fn icon_system_name(&self) -> Result<String>
SF Symbol name representing this mechanism.
§Errors
Returns an error if the Swift bridge rejects the request.
Sourcepub fn is_set(&self) -> Result<bool>
pub fn is_set(&self) -> Result<bool>
Whether the local user password or passcode is set.
§Errors
Returns an error if the Swift bridge rejects the request.
Examples found in repository?
examples/10_environment.rs (line 51)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let environment = match LAEnvironment::current_user() {
9 Ok(environment) => environment,
10 Err(error) => {
11 println!("environment APIs require macOS 15+: {error}");
12 return Ok(());
13 }
14 };
15
16 let notifications = Arc::new(AtomicUsize::new(0));
17 let registration = environment.add_observer({
18 let notifications = Arc::clone(¬ifications);
19 move |environment: &LAEnvironment, old_state: &LAEnvironmentState| {
20 let current_count = environment
21 .state()
22 .and_then(|state| state.all_mechanisms().map(|items| items.len()))
23 .unwrap_or_default();
24 let previous_count = old_state
25 .all_mechanisms()
26 .map(|items| items.len())
27 .unwrap_or_default();
28 println!(
29 "environment changed: {previous_count} -> {current_count} mechanisms"
30 );
31 notifications.fetch_add(1, Ordering::Relaxed);
32 }
33 })?;
34
35 let state = environment.state()?;
36 println!("all mechanisms: {}", state.all_mechanisms()?.len());
37
38 if let Some(biometry) = state.biometry()? {
39 println!(
40 "biometry: {:?}, enrolled={}, usable={}, icon={}",
41 biometry.biometry_type()?,
42 biometry.is_enrolled()?,
43 biometry.is_usable()?,
44 biometry.icon_system_name()?
45 );
46 }
47
48 if let Some(user_password) = state.user_password()? {
49 println!(
50 "user password: set={}, usable={}, label={}",
51 user_password.is_set()?,
52 user_password.is_usable()?,
53 user_password.localized_name()?
54 );
55 }
56
57 for companion in state.companions()? {
58 println!(
59 "companion {:?}: usable={}, state-hash-bytes={}",
60 companion.companion_type()?,
61 companion.is_usable()?,
62 companion.state_hash()?.map_or(0, |hash| hash.len())
63 );
64 }
65
66 environment.remove_observer(®istration)?;
67 println!(
68 "observer notifications seen so far: {}",
69 notifications.load(Ordering::Relaxed)
70 );
71 println!("✅ environment smoke OK");
72 Ok(())
73}Trait Implementations§
Auto Trait Implementations§
impl Freeze for LAEnvironmentMechanismUserPassword
impl RefUnwindSafe for LAEnvironmentMechanismUserPassword
impl !Send for LAEnvironmentMechanismUserPassword
impl !Sync for LAEnvironmentMechanismUserPassword
impl Unpin for LAEnvironmentMechanismUserPassword
impl UnsafeUnpin for LAEnvironmentMechanismUserPassword
impl UnwindSafe for LAEnvironmentMechanismUserPassword
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more