Struct tremor_value::KnownKey [−][src]
pub struct KnownKey<'key> { /* fields omitted */ }
Well known key that can be looked up in a Value
faster.
It achives this by memorizing the hash.
Implementations
impl<'key> KnownKey<'key>
[src]
#[must_use]pub fn key(&self) -> &Cow<'key, str>
[src]
#[must_use]
pub fn key(&self) -> &Cow<'key, str>The known key
#[must_use]pub fn lookup<'target, 'value>(
&self,
target: &'target Value<'value>
) -> Option<&'target Value<'value>> where
'key: 'value,
'value: 'target,
[src]
#[must_use]
pub fn lookup<'target, 'value>(&self,
target: &'target Value<'value>
) -> Option<&'target Value<'value>> where
'key: 'value,
'value: 'target,
Looks up this key in a Value
, returns None if the
key wasn’t present or target
isn’t an object
use tremor_value::*; let object = literal!({ "answer": 42, "key": 7 }); let known_key = KnownKey::from("answer"); assert_eq!(known_key.lookup(&object).unwrap(), &42);
pub fn lookup_mut<'target, 'value>(
&self,
target: &'target mut Value<'value>
) -> Option<&'target mut Value<'value>> where
'key: 'value,
'value: 'target,
[src]
&self,
target: &'target mut Value<'value>
) -> Option<&'target mut Value<'value>> where
'key: 'value,
'value: 'target,
Looks up this key in a Value
, returns None if the
key wasn’t present or target
isn’t an object
use tremor_value::*; let mut object = literal!({ "answer": 23, "key": 7 }); let known_key = KnownKey::from("answer"); assert_eq!(object["answer"], 23); if let Some(answer) = known_key.lookup_mut(&mut object) { *answer = Value::from(42); } assert_eq!(object["answer"], 42);
pub fn lookup_or_insert_mut<'target, 'value, F>(
&self,
target: &'target mut Value<'value>,
with: F
) -> Result<&'target mut Value<'value>, Error> where
'key: 'value,
'value: 'target,
F: FnOnce() -> Value<'value>,
[src]
&self,
target: &'target mut Value<'value>,
with: F
) -> Result<&'target mut Value<'value>, Error> where
'key: 'value,
'value: 'target,
F: FnOnce() -> Value<'value>,
Looks up this key in a Value
, inserts with
when the key
when wasn’t present returns None if the target
isn’t an object
Errors
- if the value isn’t an object
use tremor_value::*; let mut object = literal!({ "answer": 23, "key": 7 }); let known_key = KnownKey::from("answer"); assert_eq!(object["answer"], 23); if let Ok(answer) = known_key.lookup_or_insert_mut(&mut object, || 17.into()) { assert_eq!(*answer, 23); *answer = Value::from(42); } assert_eq!(object["answer"], 42); let known_key2 = KnownKey::from("also the answer"); if let Ok(answer) = known_key2.lookup_or_insert_mut(&mut object, || 8.into()) { assert_eq!(*answer, 8); *answer = Value::from(42); } assert_eq!(object["also the answer"], 42);
pub fn insert<'target, 'value>(
&self,
target: &'target mut Value<'value>,
value: Value<'value>
) -> Result<Option<Value<'value>>, Error> where
'key: 'value,
'value: 'target,
[src]
&self,
target: &'target mut Value<'value>,
value: Value<'value>
) -> Result<Option<Value<'value>>, Error> where
'key: 'value,
'value: 'target,
Inserts a value key into Value
, returns None if the
key wasn’t present otherwise Some(old value
).
Errors
- if
target
isn’t an object
use tremor_value::*; let mut object = literal!({ "answer": 23, "key": 7 }); let known_key = KnownKey::from("answer"); assert_eq!(object["answer"], 23); assert!(known_key.insert(&mut object, Value::from(42)).is_ok()); assert_eq!(object["answer"], 42); let known_key2 = KnownKey::from("also the answer"); assert!(known_key2.insert(&mut object, Value::from(42)).is_ok()); assert_eq!(object["also the answer"], 42);
Trait Implementations
impl<'key> Clone for KnownKey<'key>
[src]
impl<'key> Debug for KnownKey<'key>
[src]
impl<'key, S> From<S> for KnownKey<'key> where
Cow<'key, str>: From<S>,
[src]
Cow<'key, str>: From<S>,
impl<'key> PartialEq<KnownKey<'key>> for KnownKey<'key>
[src]
impl<'key> StructuralPartialEq for KnownKey<'key>
[src]
Auto Trait Implementations
impl<'key> RefUnwindSafe for KnownKey<'key>
impl<'key> Send for KnownKey<'key>
impl<'key> Sync for KnownKey<'key>
impl<'key> Unpin for KnownKey<'key>
impl<'key> UnwindSafe for KnownKey<'key>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,