[go: up one dir, main page]

Struct sysctl::Ctl

source ·
pub struct Ctl {
    pub oid: Vec<c_int>,
}
Expand description

This struct represents a system control.

Fields

oid: Vec<c_int>

Implementations

Construct a Ctl from the name.

This is just a wrapper around Ctl::from_str.

Returns a result containing the struct Ctl on success or a SysctlError on failure.

Example
extern crate sysctl;
use sysctl::Ctl;

let ctl = Ctl::new("kern.osrelease");

If the sysctl does not exist, Err(SysctlError::NotFound) is returned.

extern crate sysctl;
use sysctl::{Ctl, SysctlError};

let ctl = Ctl::new("this.sysctl.does.not.exist");
match ctl {
    Err(SysctlError::NotFound(_)) => (),
    Err(_) => panic!("Wrong error type returned"),
    Ok(_) => panic!("Nonexistent sysctl seems to exist"),
}

Returns a result containing the sysctl name on success, or a SysctlError on failure.

Example
let ctl = Ctl::new("kern.osrelease").expect("could not get sysctl");
assert_eq!(ctl.name().expect("could not get name"), "kern.osrelease");

Returns a result containing the sysctl value type on success, or a Sysctl Error on failure.

Example
let ctl = Ctl::new("kern.osrelease")
    .expect("Could not get kern.osrelease sysctl");
let value_type = ctl.value_type()
        .expect("Could not get kern.osrelease value type");
assert_eq!(value_type, CtlType::String);

Returns a result containing the sysctl description if success, or an Error on failure.

Example
extern crate sysctl;
use sysctl::Ctl;

fn main() {
    let osrevision = sysctl::Ctl::new("kern.osrevision")
        .expect("could not get kern.osrevision sysctl");
    println!("Description: {:?}", osrevision.description())
}

Returns a result containing the sysctl value on success, or a SysctlError on failure.

Example
extern crate sysctl;
extern crate libc;

fn main() {
    let osrevision = sysctl::Ctl::new("kern.osrevision")
        .expect("could not get kern.osrevisio sysctl");
    println!("Value: {:?}", osrevision.value());
}

A generic method that takes returns a result containing the sysctl value if success, or a SysctlError on failure.

May only be called for sysctls of type Opaque or Struct.

Example
extern crate sysctl;
extern crate libc;

use libc::c_int;

#[derive(Debug)]
#[repr(C)]
struct ClockInfo {
    hz: c_int, /* clock frequency */
    tick: c_int, /* micro-seconds per hz tick */
    spare: c_int,
    stathz: c_int, /* statistics clock frequency */
    profhz: c_int, /* profiling clock frequency */
}

fn main() {
    let clockrate = sysctl::Ctl::new("kern.clockrate")
        .expect("could not get clockrate sysctl");
    println!("{:?}", clockrate.value_as::<ClockInfo>());
}

Sets the value of a sysctl. Fetches and returns the new value if successful, or returns a SysctlError on failure.

Example
extern crate sysctl;
use sysctl::Ctl;

fn main() {
    let usbdebug = Ctl::new("hw.usb.debug")
        .expect("could not get hw.usb.debug control");
    let set = usbdebug.set_value(sysctl::CtlValue::Int(1))
        .expect("could not set value");
    assert_eq!(set, sysctl::CtlValue::Int(1));
    println!("hw.usb.debug: -> {:?}", set);
}

Get the flags for a sysctl.

Returns a Result containing the flags on success, or a SysctlError on failure.

Example
extern crate sysctl;
use sysctl::{Ctl, CtlFlags};

fn main() {
    let osrev = Ctl::new("kern.osrevision")
        .expect("could not get control");

    let readable = osrev.flags()
        .expect("could not get flags")
        .contains(CtlFlags::RD);

    assert!(readable);
}

Returns a Result containing the control metadata for a sysctl.

Returns a Result containing the CtlInfo struct on success, or a SysctlError on failure.

Example
extern crate sysctl;
use sysctl::{Ctl, CtlInfo};

fn main() {
    let osrev = Ctl::new("kern.osrevision")
        .expect("could not get control");

    let info = osrev.info()
        .expect("could not get info");

    // kern.osrevision is not a structure.
    assert_eq!(info.struct_type(), None);
}

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The associated error which can be returned from parsing.
Parses a string s to return a value of this type. Read more

Ctl implements the IntoIterator trait to allow for easy iteration over nodes.

Example

extern crate sysctl;
use sysctl::Ctl;

let kern = Ctl::new("kern");
for ctl in kern {
    let name = ctl.name().expect("could not get name");
    println!("{}", name);
}
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.