Struct rpsl::ObjectView
source · pub struct ObjectView<'a> { /* private fields */ }
Expand description
A view into an RPSL object in textual representation somewhere in memory.
This is the borrowed equivalent of an Object
, only containing references to the
original data in the form of AttributeView
s. It presents largely the same interface as
its owned equivalent, although it will always return references.
role: ACME Company ◀─────────────── &"role" ─── &"ACME Company"
address: Packet Street 6 ◀──────────── &"address" ─┬─ &"Packet Street 6"
128 Series of Tubes ◀──────── ├─ &"128 Series of Tubes"
Internet ◀─────────────────── └─ &"Internet"
email: rpsl-rs@github.com ◀───────── &"email" ─── &"rpsl-rs@github.com"
nic-hdl: RPSL1-RIPE ◀───────────────── &"nic-hdl" ─── &"RPSL1-RIPE"
source: RIPE ◀─────────────────────── &"source" ─── &"RIPE"
Since an ObjectView
is purely used to provide a view into referenced RPSL data, it can only
be created from RPSL text using the parse_object
and parse_whois_response
functions.
Examples
Like an owned Object
, its attributes can be accessed by index.
assert_eq!(role_acme[0], Attribute::new("role".parse()?, "ACME Company".parse()?));
assert_eq!(role_acme[3], Attribute::new("nic-hdl".parse()?, "RPSL1-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"]);
Views can be compared to their owned equivalents.
assert_eq!(
role_acme,
object! {
"role": "ACME Company";
"address": "Packet Street 6", "128 Series of Tubes", "Internet";
"email": "rpsl-rs@github.com";
"nic-hdl": "RPSL1-RIPE";
"source": "RIPE";
},
);
As well as converted to them if required.
role_acme.to_owned();
Implementations§
Trait Implementations§
source§impl<'a> Clone for ObjectView<'a>
impl<'a> Clone for ObjectView<'a>
source§fn clone(&self) -> ObjectView<'a>
fn clone(&self) -> ObjectView<'a>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for ObjectView<'_>
impl Debug for ObjectView<'_>
source§impl Display for ObjectView<'_>
impl Display for ObjectView<'_>
source§impl<'a> Index<usize> for ObjectView<'a>
impl<'a> Index<usize> for ObjectView<'a>
source§impl<'a> IntoIterator for ObjectView<'a>
impl<'a> IntoIterator for ObjectView<'a>
§type Item = AttributeView<'a>
type Item = AttributeView<'a>
The type of the elements being iterated over.
§type IntoIter = IntoIter<<ObjectView<'a> as IntoIterator>::Item>
type IntoIter = IntoIter<<ObjectView<'a> as IntoIterator>::Item>
Which kind of iterator are we turning this into?
source§impl PartialEq<Object> for ObjectView<'_>
impl PartialEq<Object> for ObjectView<'_>
source§impl<'a> PartialEq for ObjectView<'a>
impl<'a> PartialEq for ObjectView<'a>
source§fn eq(&self, other: &ObjectView<'a>) -> bool
fn eq(&self, other: &ObjectView<'a>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl<'a> Eq for ObjectView<'a>
impl<'a> StructuralEq for ObjectView<'a>
impl<'a> StructuralPartialEq for ObjectView<'a>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for ObjectView<'a>
impl<'a> Send for ObjectView<'a>
impl<'a> Sync for ObjectView<'a>
impl<'a> Unpin for ObjectView<'a>
impl<'a> UnwindSafe for ObjectView<'a>
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