Skip to main content

SingleInstanceOptions

Struct SingleInstanceOptions 

Source
pub struct SingleInstanceOptions { /* private fields */ }
Expand description

Options for single-instance mutex acquisition.

This builder is useful when an application wants to keep the single-instance configuration close to startup code while still using the default current-session behavior most of the time.

§Examples

let options = win_desktop_utils::SingleInstanceOptions::new(format!(
    "demo-options-{}",
    std::process::id()
))
    .scope(win_desktop_utils::InstanceScope::CurrentSession);

let guard = win_desktop_utils::single_instance_with_options(&options)?;
assert!(guard.is_some());

Implementations§

Source§

impl SingleInstanceOptions

Source

pub fn new(app_id: impl Into<String>) -> Self

Creates options for the current Windows session namespace.

Examples found in repository?
examples/single_instance_options.rs (line 2)
1fn main() -> Result<(), Box<dyn std::error::Error>> {
2    let options = win_desktop_utils::SingleInstanceOptions::new("demo-app-options")
3        .scope(win_desktop_utils::InstanceScope::CurrentSession);
4
5    match options.acquire()? {
6        Some(_guard) => {
7            println!("first instance using options");
8            println!("press Enter to exit");
9            let mut s = String::new();
10            std::io::stdin().read_line(&mut s)?;
11        }
12        None => {
13            println!("already running");
14        }
15    }
16
17    Ok(())
18}
Source

pub fn current_session(app_id: impl Into<String>) -> Self

Creates options for the current Windows session namespace.

Source

pub fn global(app_id: impl Into<String>) -> Self

Creates options for the global Windows namespace.

Source

pub fn scope(self, scope: InstanceScope) -> Self

Sets the mutex namespace scope.

Examples found in repository?
examples/single_instance_options.rs (line 3)
1fn main() -> Result<(), Box<dyn std::error::Error>> {
2    let options = win_desktop_utils::SingleInstanceOptions::new("demo-app-options")
3        .scope(win_desktop_utils::InstanceScope::CurrentSession);
4
5    match options.acquire()? {
6        Some(_guard) => {
7            println!("first instance using options");
8            println!("press Enter to exit");
9            let mut s = String::new();
10            std::io::stdin().read_line(&mut s)?;
11        }
12        None => {
13            println!("already running");
14        }
15    }
16
17    Ok(())
18}
Source

pub fn app_id(&self) -> &str

Returns the configured application ID.

Source

pub fn configured_scope(&self) -> InstanceScope

Returns the configured mutex namespace scope.

Source

pub fn acquire(&self) -> Result<Option<InstanceGuard>>

Attempts to acquire the configured single-instance guard.

Examples found in repository?
examples/single_instance_options.rs (line 5)
1fn main() -> Result<(), Box<dyn std::error::Error>> {
2    let options = win_desktop_utils::SingleInstanceOptions::new("demo-app-options")
3        .scope(win_desktop_utils::InstanceScope::CurrentSession);
4
5    match options.acquire()? {
6        Some(_guard) => {
7            println!("first instance using options");
8            println!("press Enter to exit");
9            let mut s = String::new();
10            std::io::stdin().read_line(&mut s)?;
11        }
12        None => {
13            println!("already running");
14        }
15    }
16
17    Ok(())
18}

Trait Implementations§

Source§

impl Clone for SingleInstanceOptions

Source§

fn clone(&self) -> SingleInstanceOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SingleInstanceOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for SingleInstanceOptions

Source§

fn eq(&self, other: &SingleInstanceOptions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for SingleInstanceOptions

Source§

impl StructuralPartialEq for SingleInstanceOptions

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.