#[repr(C)]
pub enum RCow<B, O> { Borrowed(B), Owned(O), }
Expand description

Ffi-safe equivalent of std::borrow::Cow.

This has type aliases for the three most common usecases:

  • RCowStr: contains an RStr<'_> or an RString.

  • RCowSlice: contains an RSlice<'_, T> or an RVec<T>.

  • RCowVal: contains a &T or a T.

Example

Using a RCowStr<'a>.

This implements a solution to the well known fizzbuzz problem.

use abi_stable::std_types::{RCow, RCowStr};

fn fizzbuzz(n: u32) -> RCowStr<'static> {
    match (n % 3, n % 5) {
        (0, 0) => RCow::from("FizzBuzz"),
        (0, _) => RCow::from("Fizz"),
        (_, 0) => RCow::from("Buzz"),
        (_, _) => RCow::from(n.to_string()),
    }
}

for n in 1..=100 {
    println!("{}", fizzbuzz(n));
}

Note: this example allocates when the number is neither a multiple of 5 or 3.

Variants§

§

Borrowed(B)

§

Owned(O)

Implementations§

source§

impl<B> RCow<B, B::ROwned>
where B: IntoOwned,

source

pub fn to_mut(&mut self) -> &mut B::ROwned

Get a mutable reference to the owned form of RCow, converting to the owned form if it is currently the borrowed form.

Examples
use abi_stable::std_types::{RCow, RCowStr};

let mut cow: RCowStr<'_> = RCow::from("Hello");

assert_eq!(&*cow, "Hello");
assert!(cow.is_borrowed());

cow.to_mut().push_str(", world!");

assert!(cow.is_owned());
assert_eq!(cow, RCow::from("Hello, world!"));
source

pub fn into_owned(self) -> B::ROwned

Unwraps into the owned owner form of RCow, converting to the owned form if it is currently the borrowed form.

Examples
use abi_stable::std_types::{RCow, RCowStr};

let mut cow: RCowStr<'_> = RCow::from("Hello");

assert_eq!(&*cow, "Hello");

let mut buff = cow.into_owned();
buff.push_str(", world!");

assert_eq!(&*buff, "Hello, world!");
source

pub fn borrowed(&self) -> &<B as Deref>::Target

Gets the contents of the RCow casted to the borrowed variant.

Examples
use abi_stable::std_types::{RCow, RCowSlice, RSlice};
{
    let cow: RCowSlice<'_, u8> = RCow::from(&[0, 1, 2, 3][..]);
    assert_eq!(cow.borrowed(), RSlice::from_slice(&[0, 1, 2, 3]));
}
{
    let cow: RCowSlice<'_, u8> = RCow::from(vec![0, 1, 2, 3]);
    assert_eq!(cow.borrowed(), RSlice::from_slice(&[0, 1, 2, 3]));
}
source§

impl<B, O> RCow<B, O>

source

pub const fn is_borrowed(&self) -> bool

Whether this is a borrowing RCow.

Examples
use abi_stable::std_types::{RCow, RCowSlice};

{
    let cow: RCowSlice<'_, u8> = RCow::from(&[0, 1, 2, 3][..]);
    assert!(cow.is_borrowed());
}
{
    let cow: RCowSlice<'_, u8> = RCow::from(vec![0, 1, 2, 3]);
    assert!(!cow.is_borrowed());
}
source

pub const fn is_owned(&self) -> bool

Whether this is an owning RCow.

Examples
use abi_stable::std_types::{RCow, RCowSlice};

let cow: RCowSlice<'_, u8> = RCow::from(&[0, 1, 2, 3][..]);
assert!(!cow.is_owned());

let cow: RCowSlice<'_, u8> = RCow::from(vec![0, 1, 2, 3]);
assert!(cow.is_owned());
source§

impl<'a> RCow<RStr<'a>, RString>

source

pub const fn from_str(this: &'a str) -> Self

For converting a &'a [T] to an RCowSlice<'a, T>, most useful when converting from &'a [T;N] because it coerces the array to a slice.

Example
use abi_stable::std_types::{RCow, RCowStr};

const C: RCowStr<'_> = RCow::from_str("hello");

assert_eq!(C, "hello");
source

pub const fn as_str(&self) -> &str

Borrows this RCow as a str.

Conditional const fn

This function requires the rust_1_64 feature to be const-callable

Example
use abi_stable::std_types::RCow;

let cow = RCow::from_str("world");

assert_eq!(cow.as_str(), "world")
source§

impl<'a, T> RCow<RSlice<'a, T>, RVec<T>>

source

pub const fn from_slice(this: &'a [T]) -> Self

For converting a &'a [T] to an RCowSlice<'a, T>, most useful when converting from &'a [T;N] because it coerces the array to a slice.

Example
use abi_stable::std_types::{RCow, RCowSlice};

const C: RCowSlice<'_, u8> = RCow::from_slice(&[3, 5, 8]);

assert_eq!(C, [3, 5, 8]);
source

pub const fn as_slice(&self) -> &[T]

Borrows this RCow as a slice.

Conditional const fn

This function requires the rust_1_64 feature to be const-callable

Example
use abi_stable::std_types::RCow;

let cow = RCow::from_slice(&[3, 5, 8]);

assert_eq!(cow.as_slice(), [3, 5, 8])

Trait Implementations§

source§

impl<B> Clone for RCow<B, B::ROwned>
where B: IntoOwned, B::ROwned: Clone,

source§

fn clone(&self) -> Self

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<B> Debug for RCow<B, B::ROwned>
where B: IntoOwned, B::Target: Debug,

source§

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

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

impl<B> Deref for RCow<B, B::ROwned>
where B: IntoOwned,

§

type Target = <B as Deref>::Target

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<B> Display for RCow<B, B::ROwned>
where B: IntoOwned, B::Target: Display,

source§

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

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

impl<'a, T> From<Cow<'a, T>> for RCow<T::RefC, T::ROwned>
where T: ?Sized + RCowCompatibleRef<'a>,

source§

fn from(this: Cow<'a, T>) -> RCow<T::RefC, T::ROwned>

Converts to this type from the input type.
source§

impl<'a, T, B> From<RCow<B, <T as RCowCompatibleRef<'a>>::ROwned>> for Cow<'a, T>
where T: ?Sized + RCowCompatibleRef<'a, RefC = B>, B: IntoOwned<ROwned = T::ROwned, Target = T>,

source§

fn from(this: RCow<B, T::ROwned>) -> Cow<'a, T>

Converts to this type from the input type.
source§

impl<B, O> GetStaticEquivalent_ for RCow<B, O>
where B: __StableAbi, O: __StableAbi,

§

type StaticEquivalent = _static_RCow<<B as GetStaticEquivalent_>::StaticEquivalent, <O as GetStaticEquivalent_>::StaticEquivalent>

The 'static equivalent of Self
source§

impl<B> Hash for RCow<B, B::ROwned>
where B: IntoOwned, B::Target: Hash,

source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<B> Ord for RCow<B, B::ROwned>
where B: IntoOwned, B::Target: Ord,

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<U: PartialEq<T>, T> PartialEq<RCow<RSlice<'_, T>, RVec<T>>> for &[U]
where T: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, T>) -> 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<U: PartialEq<T>, T> PartialEq<RCow<RSlice<'_, T>, RVec<T>>> for [U]
where T: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, T>) -> 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<U: PartialEq<T>, T, const N: usize> PartialEq<RCow<RSlice<'_, T>, RVec<T>>> for [U; N]
where T: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, T>) -> 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<U, T> PartialEq<RCow<RSlice<'_, T>, RVec<T>>> for Cow<'_, [U]>
where T: Clone, U: Clone + PartialEq<T>,

source§

fn eq(&self, other: &RCowSlice<'_, T>) -> 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<U: PartialEq<T>, T> PartialEq<RCow<RSlice<'_, T>, RVec<T>>> for Vec<U>
where T: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, T>) -> 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<T, U> PartialEq<RCow<RSlice<'_, U>, RVec<U>>> for RSlice<'_, T>
where T: Clone + PartialEq<U>, U: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, U>) -> 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<T, U> PartialEq<RCow<RSlice<'_, U>, RVec<U>>> for RSliceMut<'_, T>
where T: Clone + PartialEq<U>, U: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, U>) -> 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<T, U> PartialEq<RCow<RSlice<'_, U>, RVec<U>>> for RVec<T>
where T: Clone + PartialEq<U>, U: Clone,

source§

fn eq(&self, other: &RCowSlice<'_, U>) -> 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<RCow<RStr<'_>, RString>> for &str

source§

fn eq(&self, other: &RCowStr<'_>) -> 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<RCow<RStr<'_>, RString>> for Cow<'_, str>

source§

fn eq(&self, other: &RCowStr<'_>) -> 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<RCow<RStr<'_>, RString>> for RStr<'_>

source§

fn eq(&self, other: &RCowStr<'_>) -> 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<RCow<RStr<'_>, RString>> for RString

source§

fn eq(&self, other: &RCowStr<'_>) -> 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<RCow<RStr<'_>, RString>> for String

source§

fn eq(&self, other: &RCowStr<'_>) -> 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<RCow<RStr<'_>, RString>> for str

source§

fn eq(&self, other: &RCowStr<'_>) -> 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<B, V> PartialEq<RCow<V, <V as IntoOwned>::ROwned>> for RCow<B, B::ROwned>
where B: IntoOwned, V: IntoOwned, B::Target: PartialEq<V::Target>,

source§

fn eq(&self, other: &RCow<V, V::ROwned>) -> 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<U, T> PartialOrd<RCow<RSlice<'_, T>, RVec<T>>> for &[U]
where U: PartialOrd<T>, [U]: PartialOrd<[T]>, T: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<U, T> PartialOrd<RCow<RSlice<'_, T>, RVec<T>>> for [U]
where U: PartialOrd<T>, [U]: PartialOrd<[T]>, T: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<U, T, const N: usize> PartialOrd<RCow<RSlice<'_, T>, RVec<T>>> for [U; N]
where U: PartialOrd<T>, [U]: PartialOrd<[T]>, T: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<U, T> PartialOrd<RCow<RSlice<'_, T>, RVec<T>>> for Cow<'_, [U]>
where U: PartialOrd<T> + Clone, [U]: PartialOrd<[T]>, T: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<U, T> PartialOrd<RCow<RSlice<'_, T>, RVec<T>>> for Vec<U>
where U: PartialOrd<T>, [U]: PartialOrd<[T]>, T: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<T, U> PartialOrd<RCow<RSlice<'_, U>, RVec<U>>> for RSlice<'_, T>
where T: PartialOrd<U> + Clone, [T]: PartialOrd<[U]>, U: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, U>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<T, U> PartialOrd<RCow<RSlice<'_, U>, RVec<U>>> for RSliceMut<'_, T>
where T: PartialOrd<U> + Clone, [T]: PartialOrd<[U]>, U: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, U>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<T, U> PartialOrd<RCow<RSlice<'_, U>, RVec<U>>> for RVec<T>
where T: PartialOrd<U> + Clone, [T]: PartialOrd<[U]>, U: Clone,

source§

fn partial_cmp(&self, other: &RCowSlice<'_, U>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl PartialOrd<RCow<RStr<'_>, RString>> for &str

source§

fn partial_cmp(&self, other: &RCowStr<'_>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl PartialOrd<RCow<RStr<'_>, RString>> for Cow<'_, str>

source§

fn partial_cmp(&self, other: &RCowStr<'_>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl PartialOrd<RCow<RStr<'_>, RString>> for RStr<'_>

source§

fn partial_cmp(&self, other: &RCowStr<'_>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl PartialOrd<RCow<RStr<'_>, RString>> for RString

source§

fn partial_cmp(&self, other: &RCowStr<'_>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl PartialOrd<RCow<RStr<'_>, RString>> for String

source§

fn partial_cmp(&self, other: &RCowStr<'_>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl PartialOrd<RCow<RStr<'_>, RString>> for str

source§

fn partial_cmp(&self, other: &RCowStr<'_>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<B, V> PartialOrd<RCow<V, <V as IntoOwned>::ROwned>> for RCow<B, B::ROwned>
where B: IntoOwned, V: IntoOwned, B::Target: PartialOrd<V::Target>,

source§

fn partial_cmp(&self, other: &RCow<V, V::ROwned>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<B> Serialize for RCow<B, B::ROwned>
where B: IntoOwned, B::Target: Serialize,

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<B, O> StableAbi for RCow<B, O>
where B: __StableAbi, O: __StableAbi,

§

type IsNonZeroType = False

Whether this type has a single invalid bit-pattern. Read more
source§

const LAYOUT: &'static TypeLayout = _

The layout of the type provided by implementors.
source§

const ABI_CONSTS: AbiConsts = _

const-equivalents of the associated types.
source§

impl<B> Copy for RCow<B, B::ROwned>
where B: IntoOwned, B::ROwned: Copy,

source§

impl<B> Eq for RCow<B, B::ROwned>
where B: IntoOwned, B::Target: Eq,

Auto Trait Implementations§

§

impl<B, O> RefUnwindSafe for RCow<B, O>

§

impl<B, O> Send for RCow<B, O>
where B: Send, O: Send,

§

impl<B, O> Sync for RCow<B, O>
where B: Sync, O: Sync,

§

impl<B, O> Unpin for RCow<B, O>
where B: Unpin, O: Unpin,

§

impl<B, O> UnwindSafe for RCow<B, O>
where B: UnwindSafe, O: UnwindSafe,

Blanket Implementations§

source§

impl<T> AlignerFor<1> for T

§

type Aligner = AlignTo1<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<1024> for T

§

type Aligner = AlignTo1024<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<128> for T

§

type Aligner = AlignTo128<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<16> for T

§

type Aligner = AlignTo16<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<16384> for T

§

type Aligner = AlignTo16384<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<2> for T

§

type Aligner = AlignTo2<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<2048> for T

§

type Aligner = AlignTo2048<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<256> for T

§

type Aligner = AlignTo256<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<32> for T

§

type Aligner = AlignTo32<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<32768> for T

§

type Aligner = AlignTo32768<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<4> for T

§

type Aligner = AlignTo4<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<4096> for T

§

type Aligner = AlignTo4096<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<512> for T

§

type Aligner = AlignTo512<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<64> for T

§

type Aligner = AlignTo64<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<8> for T

§

type Aligner = AlignTo8<T>

The AlignTo* type which aligns Self to ALIGNMENT.
source§

impl<T> AlignerFor<8192> for T

§

type Aligner = AlignTo8192<T>

The AlignTo* type which aligns Self to ALIGNMENT.
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<'a, T> RCowCompatibleRef<'a> for T
where T: Clone + 'a,

§

type RefC = &'a T

The (preferably) ffi-safe equivalent of &Self.
§

type ROwned = T

The owned version of Self::RefC.
source§

fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC

Converts a reference to an FFI-safe type
source§

fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T

Converts an FFI-safe type to a reference
source§

impl<S> ROExtAcc for S

source§

fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F

Gets a reference to a field, determined by offset. Read more
source§

fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F

Gets a muatble reference to a field, determined by offset. Read more
source§

fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F

Gets a const pointer to a field, the field is determined by offset. Read more
source§

fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F

Gets a mutable pointer to a field, determined by offset. Read more
source§

impl<S> ROExtOps<Aligned> for S

source§

fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F

Replaces a field (determined by offset) with value, returning the previous value of the field. Read more
source§

fn f_swap<F>(&mut self, offset: FieldOffset<S, F, Aligned>, right: &mut S)

Swaps a field (determined by offset) with the same field in right. Read more
source§

fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> F
where F: Copy,

Gets a copy of a field (determined by offset). The field is determined by offset. Read more
source§

impl<S> ROExtOps<Unaligned> for S

source§

fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F

Replaces a field (determined by offset) with value, returning the previous value of the field. Read more
source§

fn f_swap<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, right: &mut S)

Swaps a field (determined by offset) with the same field in right. Read more
source§

fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> F
where F: Copy,

Gets a copy of a field (determined by offset). The field is determined by offset. Read more
source§

impl<T> SelfOps for T
where T: ?Sized,

source§

fn eq_id(&self, other: &Self) -> bool

Compares the address of self with the address of other. Read more
source§

fn piped<F, U>(self, f: F) -> U
where F: FnOnce(Self) -> U, Self: Sized,

Emulates the pipeline operator, allowing method syntax in more places. Read more
source§

fn piped_ref<'a, F, U>(&'a self, f: F) -> U
where F: FnOnce(&'a Self) -> U,

The same as piped except that the function takes &Self Useful for functions that take &Self instead of Self. Read more
source§

fn piped_mut<'a, F, U>(&'a mut self, f: F) -> U
where F: FnOnce(&'a mut Self) -> U,

The same as piped, except that the function takes &mut Self. Useful for functions that take &mut Self instead of Self.
source§

fn mutated<F>(self, f: F) -> Self
where F: FnOnce(&mut Self), Self: Sized,

Mutates self using a closure taking self by mutable reference, passing it along the method chain. Read more
source§

fn observe<F>(self, f: F) -> Self
where F: FnOnce(&Self), Self: Sized,

Observes the value of self, passing it along unmodified. Useful in long method chains. Read more
source§

fn into_<T>(self) -> T
where Self: Into<T>,

Performs a conversion with Into. using the turbofish .into_::<_>() syntax. Read more
source§

fn as_ref_<T>(&self) -> &T
where Self: AsRef<T>, T: ?Sized,

Performs a reference to reference conversion with AsRef, using the turbofish .as_ref_::<_>() syntax. Read more
source§

fn as_mut_<T>(&mut self) -> &mut T
where Self: AsMut<T>, T: ?Sized,

Performs a mutable reference to mutable reference conversion with AsMut, using the turbofish .as_mut_::<_>() syntax. Read more
source§

fn drop_(self)
where Self: Sized,

Drops self using method notation. Alternative to std::mem::drop. Read more
source§

impl<T> StringExt for T
where T: Borrow<str> + ?Sized,

source§

fn previous_char_boundary(&self, index: usize) -> usize

Returns the previous character boundary, stopping at 0. Read more
source§

fn next_char_boundary(&self, index: usize) -> usize

Returns the next character boundary. Read more
source§

fn left_char_boundary(&self, index: usize) -> usize

Returns the closest characted boundary left of index(including index). Read more
source§

fn right_char_boundary(&self, index: usize) -> usize

Returns the closest characted boundary right of index(including index). Read more
source§

fn split_while<P, T, 'a>(&'a self, mapper: P) -> SplitWhile<'a, P, T>
where T: Eq + Clone, P: FnMut(char) -> T,

Returns an iterator over substrings whose characters were mapped to the same key by mapper. Read more
source§

fn rsplit_while<P, T, 'a>(&'a self, mapper: P) -> RSplitWhile<'a, P, T>
where T: Eq + Clone, P: FnMut(char) -> T,

A variation of split_while that iterates from the right(the order of substrings is reversed). Read more
source§

fn get_nth_char_index(&self, nth: usize) -> Option<usize>

The byte index of the nth character Read more
source§

fn nth_char_index(&self, nth: usize) -> usize

The byte index of the nth character Read more
source§

fn nth_char(&self, nth: usize) -> Option<char>

Returns the nth character in the str. Read more
source§

fn first_chars(&self, n: usize) -> &str

Returns a string containing the first n chars. Read more
source§

fn last_chars(&self, n: usize) -> &str

Returns a string containing the last n chars Read more
source§

fn from_nth_char(&self, n: usize) -> &str

Returns the string from the nth character Read more
source§

fn calc_len_utf16(&self) -> usize

Returns the length of the string in utf16 Read more
source§

fn get_char_at(&self, at_byte: usize) -> Option<char>

Returns the character at the at_byte index inside of the string, returning None if the index is outside the string. Read more
source§

fn char_indices_to(&self, to: usize) -> CharIndices<'_>

Returns an iterator over (index,char) pairs up to (but not including) the char at the to byte. Read more
source§

fn char_indices_from(&self, from: usize) -> CharIndicesFrom<'_>

Returns an iterator over (index, char) pairs, starting from the from byte. Read more
source§

fn left_pad(&self, how_much: usize) -> String

Pads the string on the left with how_much additional spaces. Read more
source§

fn left_padder<'a>(&'a self, how_much: usize) -> LeftPadder<'a>

Returns a value that pads the string on the left with how_much additional spaces in its Display impl. Read more
source§

fn line_indentation(&self) -> usize

The indentation of the first line. Read more
source§

fn min_indentation(&self) -> usize

The minimum indentation of the string, ignoring lines that only contain whitespace. Read more
source§

fn max_indentation(&self) -> usize

The maximum indentation of the string, ignoring lines that only contain whitespace. Read more
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<This> TransmuteElement for This
where This: ?Sized,

source§

unsafe fn transmute_element<T>( self ) -> <Self as CanTransmuteElement<T>>::TransmutedPtr
where Self: CanTransmuteElement<T>,

Transmutes the element type of this pointer.. 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.
source§

impl<T> TypeIdentity for T
where T: ?Sized,

§

type Type = T

This is always Self.
source§

fn into_type(self) -> Self::Type
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
source§

fn as_type(&self) -> &Self::Type

Converts a reference back to the original type.
source§

fn as_type_mut(&mut self) -> &mut Self::Type

Converts a mutable reference back to the original type.
source§

fn into_type_box(self: Box<Self>) -> Box<Self::Type>

Converts a box back to the original type.
source§

fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>

Converts an Arc back to the original type. Read more
source§

fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>

Converts an Rc back to the original type. Read more
source§

fn from_type(this: Self::Type) -> Self
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
source§

fn from_type_ref(this: &Self::Type) -> &Self

Converts a reference back to the original type.
source§

fn from_type_mut(this: &mut Self::Type) -> &mut Self

Converts a mutable reference back to the original type.
source§

fn from_type_box(this: Box<Self::Type>) -> Box<Self>

Converts a box back to the original type.
source§

fn from_type_arc(this: Arc<Self::Type>) -> Arc<Self>

Converts an Arc back to the original type.
source§

fn from_type_rc(this: Rc<Self::Type>) -> Rc<Self>

Converts an Rc back to the original type.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<This> ValidTag_Bounds for This
where This: Debug + Clone + PartialEq,