Enum Variable

Source
pub enum Variable {
    DeviceModel(String),
    DeviceManufacturer(String),
    DeviceSerial(String),
    DeviceType(DeviceType),
    DeviceDescription(String),
    DeviceContact(String),
    DeviceLocation(String),
    DevicePart(String),
    DeviceMacAddress(String),
    DeviceUptime(Duration),
    Other((String, String)),
}
Expand description

Well-known variables for NUT UPS devices.

List retrieved from: https://networkupstools.org/docs/user-manual.chunked/apcs01.html

Variants§

§

DeviceModel(String)

Device model.

§

DeviceManufacturer(String)

Device manufacturer.

§

DeviceSerial(String)

Device serial number.

§

DeviceType(DeviceType)

Device type.

§

DeviceDescription(String)

Device description.

§

DeviceContact(String)

Device administrator name.

§

DeviceLocation(String)

Device physical location.

§

DevicePart(String)

Device part number.

§

DeviceMacAddress(String)

Device MAC address.

§

DeviceUptime(Duration)

Device uptime.

§

Other((String, String))

Any other variable. Value is a tuple of (key, value).

Implementations§

Source§

impl Variable

Source

pub fn parse(name: &str, value: String) -> Variable

Parses a variable from its key and value.

Source

pub fn name(&self) -> &str

Returns the NUT name of the variable.

Examples found in repository?
examples/blocking.rs (line 46)
7fn main() -> nut_client::Result<()> {
8    let host = env::var("NUT_HOST").unwrap_or_else(|_| "localhost".into());
9    let port = env::var("NUT_PORT")
10        .ok()
11        .map(|s| s.parse::<u16>().ok())
12        .flatten()
13        .unwrap_or(3493);
14
15    let username = env::var("NUT_USER").ok();
16    let password = env::var("NUT_PASSWORD").ok();
17    let auth = username.map(|username| Auth::new(username, password));
18
19    let config = ConfigBuilder::new()
20        .with_host((host, port).try_into().unwrap_or_default())
21        .with_auth(auth)
22        .with_debug(false) // Turn this on for debugging network chatter
23        .build();
24
25    let mut conn = Connection::new(&config)?;
26
27    // Get server information
28    println!("NUT server:");
29    println!("\tVersion: {}", conn.get_server_version()?);
30    println!("\tNetwork Version: {}", conn.get_network_version()?);
31
32    // Print a list of all UPS devices
33    println!("Connected UPS devices:");
34    for (name, description) in conn.list_ups()? {
35        println!("\t- Name: {}", name);
36        println!("\t  Description: {}", description);
37        println!("\t  Number of logins: {}", conn.get_num_logins(&name)?);
38
39        // Get list of mutable variables
40        let mutable_vars = conn.list_mutable_vars(&name)?;
41
42        // List UPS variables (key = val)
43        println!("\t  Mutable Variables:");
44        for var in mutable_vars.iter() {
45            println!("\t\t- {}", var);
46            println!("\t\t  {:?}", conn.get_var_type(&name, var.name())?);
47        }
48
49        // List UPS immutable properties (key = val)
50        println!("\t  Immutable Properties:");
51        for var in conn.list_vars(&name)? {
52            if mutable_vars.iter().any(|v| v.name() == var.name()) {
53                continue;
54            }
55            println!("\t\t- {}", var);
56            println!("\t\t  {:?}", conn.get_var_type(&name, var.name())?);
57        }
58
59        // List UPS commands
60        println!("\t  Commands:");
61        for cmd in conn.list_commands(&name)? {
62            let description = conn.get_command_description(&name, &cmd)?;
63            println!("\t\t- {} ({})", cmd, description);
64        }
65    }
66
67    // Gracefully shut down the connection using the `LOGOUT` command
68    conn.close()
69}
More examples
Hide additional examples
examples/async.rs (line 50)
8async fn main() -> nut_client::Result<()> {
9    let host = env::var("NUT_HOST").unwrap_or_else(|_| "localhost".into());
10    let port = env::var("NUT_PORT")
11        .ok()
12        .map(|s| s.parse::<u16>().ok())
13        .flatten()
14        .unwrap_or(3493);
15
16    let username = env::var("NUT_USER").ok();
17    let password = env::var("NUT_PASSWORD").ok();
18    let auth = username.map(|username| Auth::new(username, password));
19
20    let config = ConfigBuilder::new()
21        .with_host((host, port).try_into().unwrap_or_default())
22        .with_auth(auth)
23        .with_debug(false) // Turn this on for debugging network chatter
24        .build();
25
26    let mut conn = Connection::new(&config).await?;
27
28    // Get server information
29    println!("NUT server:");
30    println!("\tVersion: {}", conn.get_server_version().await?);
31    println!("\tNetwork Version: {}", conn.get_network_version().await?);
32
33    // Print a list of all UPS devices
34    println!("Connected UPS devices:");
35    for (name, description) in conn.list_ups().await? {
36        println!("\t- Name: {}", name);
37        println!("\t  Description: {}", description);
38        println!(
39            "\t  Number of logins: {}",
40            conn.get_num_logins(&name).await?
41        );
42
43        // Get list of mutable variables
44        let mutable_vars = conn.list_mutable_vars(&name).await?;
45
46        // List UPS variables (key = val)
47        println!("\t  Mutable Variables:");
48        for var in mutable_vars.iter() {
49            println!("\t\t- {}", var);
50            println!("\t\t  {:?}", conn.get_var_type(&name, var.name()).await?);
51        }
52
53        // List UPS immutable properties (key = val)
54        println!("\t  Immutable Properties:");
55        for var in conn.list_vars(&name).await? {
56            if mutable_vars.iter().any(|v| v.name() == var.name()) {
57                continue;
58            }
59            println!("\t\t- {}", var);
60            println!("\t\t  {:?}", conn.get_var_type(&name, var.name()).await?);
61        }
62
63        // List UPS commands
64        println!("\t  Commands:");
65        for cmd in conn.list_commands(&name).await? {
66            let description = conn.get_command_description(&name, &cmd).await?;
67            println!("\t\t- {} ({})", cmd, description);
68        }
69    }
70
71    // Gracefully shut down the connection using the `LOGOUT` command
72    conn.close().await
73}
Source

pub fn value(&self) -> String

Returns the value of the NUT variable.

Trait Implementations§

Source§

impl Clone for Variable

Source§

fn clone(&self) -> Variable

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 Variable

Source§

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

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

impl Display for Variable

Source§

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

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

impl PartialEq for Variable

Source§

fn eq(&self, other: &Variable) -> 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 Variable

Source§

impl StructuralPartialEq for Variable

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.