Struct rpsl::Object

source ·
pub struct Object(/* private fields */);
Expand description

A RPSL object.

┌───────────────────────────────────────────────┐
│  Object                                       │
├───────────────────────────────────────────────┤
│  [role]    ───  ACME Company                  │
│  [address] ──┬─ Packet Street 6               │
│              ├─ 128 Series of Tubes           │
│              └─ Internet                      │
│  [email]   ───  rpsl-rs@github.com            │
│  [nic-hdl] ───  RPSL1-RIPE                    │
│  [source]  ───  RIPE                          │
└───────────────────────────────────────────────┘

Examples

A role object for the ACME corporation.

let role_acme = Object::new(vec![
    Attribute::new("role".parse()?, "ACME Company".parse()?),
    Attribute::new("address".parse()?, "Packet Street 6".parse()?),
    Attribute::new("address".parse()?, "128 Series of Tubes".parse()?),
    Attribute::new("address".parse()?, "Internet".parse()?),
    Attribute::new("email".parse()?, "rpsl-rs@github.com".parse()?),
    Attribute::new("nic-hdl".parse()?, "RPSL1-RIPE".parse()?),
    Attribute::new("source".parse()?, "RIPE".parse()?),
]);

Although creating an Object from a vector of Attributes works, the more idiomatic way to do it is by using the object! macro.

assert_eq!(
    role_acme,
    object! {
        "role": "ACME Company";
        "address": "Packet Street 6";
        "address": "128 Series of Tubes";
        "address": "Internet";
        "email": "rpsl-rs@github.com";
        "nic-hdl": "RPSL1-RIPE";
        "source": "RIPE";
    },
);

Each attribute can be accessed by index.

assert_eq!(role_acme[0], Attribute::new("role".parse()?, "ACME Company".parse()?));
assert_eq!(role_acme[6], Attribute::new("source".parse()?, "RIPE".parse()?));

While specific attribute values can be accessed by name.

assert_eq!(role_acme.get("role"), vec!["ACME Company"]);
assert_eq!(role_acme.get("address"), vec!["Packet Street 6", "128 Series of Tubes", "Internet"]);
assert_eq!(role_acme.get("email"), vec!["rpsl-rs@github.com"]);
assert_eq!(role_acme.get("nic-hdl"), vec!["RPSL1-RIPE"]);
assert_eq!(role_acme.get("source"), vec!["RIPE"]);

The entire object can also be represented as RPSL.

assert_eq!(
   role_acme.to_string(),
   concat!(
       "role:           ACME Company\n",
       "address:        Packet Street 6\n",
       "address:        128 Series of Tubes\n",
       "address:        Internet\n",
       "email:          rpsl-rs@github.com\n",
       "nic-hdl:        RPSL1-RIPE\n",
       "source:         RIPE\n",
       "\n"
   )
);

Implementations§

source§

impl Object

source

pub fn new(attributes: Vec<Attribute>) -> Self

Create a new RPSL object from a vector of attributes.

Example
let role_acme = Object::new(vec![
    Attribute::new("role".parse()?, "ACME Company".parse()?),
    Attribute::new("address".parse()?, "Packet Street 6".parse()?),
    Attribute::new("address".parse()?, "128 Series of Tubes".parse()?),
    Attribute::new("address".parse()?, "Internet".parse()?),
    Attribute::new("email".parse()?, "rpsl-rs@github.com".parse()?),
    Attribute::new("nic-hdl".parse()?, "RPSL1-RIPE".parse()?),
    Attribute::new("source".parse()?, "RIPE".parse()?),
]);
source

pub fn len(&self) -> usize

The number of attributes in the object.

source

pub fn get(&self, name: &str) -> Vec<&String>

Get the value(s) of specific attribute(s).

Trait Implementations§

source§

impl Clone for Object

source§

fn clone(&self) -> Object

Returns a copy 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 Object

source§

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

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

impl Display for Object

source§

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

Display the object as RPSL.

source§

impl Index<usize> for Object

§

type Output = Attribute

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IntoIterator for Object

§

type Item = Attribute

The type of the elements being iterated over.
§

type IntoIter = IntoIter<<Object as IntoIterator>::Item>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl PartialEq<Object> for ObjectView<'_>

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq for Object

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Object

source§

impl StructuralEq for Object

source§

impl StructuralPartialEq for Object

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> 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,

§

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§

default 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>,

§

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>,

§

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.