pub struct EncodableOptionString(pub Option<Cow<'static, str>>);Expand description
A wrapper for Option<Cow<'static, str>> to make encoding and decoding easier.
Tuple Fields§
§0: Option<Cow<'static, str>>Implementations§
Methods from Deref<Target = Option<Cow<'static, str>>>§
1.0.0 · Sourcepub fn as_ref(&self) -> Option<&T>
pub fn as_ref(&self) -> Option<&T>
Converts from &Option<T> to Option<&T>.
§Examples
Calculates the length of an Option<String> as an Option<usize>
without moving the String. The map method takes the self argument by value,
consuming the original, so this technique uses as_ref to first take an Option to a
reference to the value inside the original.
let text: Option<String> = Some("Hello, world!".to_string());
// First, cast `Option<String>` to `Option<&String>` with `as_ref`,
// then consume *that* with `map`, leaving `text` on the stack.
let text_length: Option<usize> = text.as_ref().map(|s| s.len());
println!("still can print text: {text:?}");1.75.0 · Sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns a slice of the contained value, if any. If this is None, an
empty slice is returned. This can be useful to have a single type of
iterator over an Option or slice.
Note: Should you have an Option<&T> and wish to get a slice of T,
you can unpack it via opt.map_or(&[], std::slice::from_ref).
§Examples
assert_eq!(
[Some(1234).as_slice(), None.as_slice()],
[&[1234][..], &[][..]],
);The inverse of this function is (discounting
borrowing) [_]::first:
for i in [Some(1234_u16), None] {
assert_eq!(i.as_ref(), i.as_slice().first());
}1.40.0 · Sourcepub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
pub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
Converts from Option<T> (or &Option<T>) to Option<&T::Target>.
Leaves the original Option in-place, creating a new one with a reference
to the original one, additionally coercing the contents via Deref.
§Examples
let x: Option<String> = Some("hey".to_owned());
assert_eq!(x.as_deref(), Some("hey"));
let x: Option<String> = None;
assert_eq!(x.as_deref(), None);Trait Implementations§
Source§impl Clone for EncodableOptionString
impl Clone for EncodableOptionString
Source§fn clone(&self) -> EncodableOptionString
fn clone(&self) -> EncodableOptionString
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EncodableOptionString
impl Debug for EncodableOptionString
Source§impl Deref for EncodableOptionString
impl Deref for EncodableOptionString
Source§impl Display for EncodableOptionString
impl Display for EncodableOptionString
Source§impl Hash for EncodableOptionString
impl Hash for EncodableOptionString
Source§impl Ord for EncodableOptionString
impl Ord for EncodableOptionString
Source§fn cmp(&self, other: &EncodableOptionString) -> Ordering
fn cmp(&self, other: &EncodableOptionString) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for EncodableOptionString
impl PartialEq for EncodableOptionString
Source§impl PartialOrd for EncodableOptionString
impl PartialOrd for EncodableOptionString
impl Eq for EncodableOptionString
impl StructuralPartialEq for EncodableOptionString
Auto Trait Implementations§
impl Freeze for EncodableOptionString
impl RefUnwindSafe for EncodableOptionString
impl Send for EncodableOptionString
impl Sync for EncodableOptionString
impl Unpin for EncodableOptionString
impl UnwindSafe for EncodableOptionString
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more