Trait ToOwned

1.85.0 · Source
pub trait ToOwned {
    type Owned: Borrow<Self>;

    // Required method
    fn to_owned(&self) -> Self::Owned;

    // Provided method
    fn clone_into(&self, target: &mut Self::Owned) { ... }
}
Expand description

A generalization of Clone to borrowed data.

Some types make it possible to go from borrowed to owned, usually by implementing the Clone trait. But Clone works only for going from &T to T. The ToOwned trait generalizes Clone to construct owned data from any borrow of a given type.

Required Associated Types§

1.0.0 · Source

type Owned: Borrow<Self>

The resulting type after obtaining ownership.

Required Methods§

1.0.0 · Source

fn to_owned(&self) -> Self::Owned

Creates owned data from borrowed data, usually by cloning.

§Examples

Basic usage:

let s: &str = "a";
let ss: String = s.to_owned();

let v: &[i32] = &[1, 2];
let vv: Vec<i32> = v.to_owned();

Provided Methods§

1.63.0 · Source

fn clone_into(&self, target: &mut Self::Owned)

Uses borrowed data to replace owned data, usually by cloning.

This is borrow-generalized version of Clone::clone_from.

§Examples

Basic usage:

let mut s: String = String::new();
"hello".clone_into(&mut s);

let mut v: Vec<i32> = Vec::new();
[1, 2][..].clone_into(&mut v);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

1.0.0 · Source§

impl ToOwned for str

Source§

impl ToOwned for ByteStr

1.3.0 · Source§

impl ToOwned for CStr

Source§

impl ToOwned for RawValue

1.0.0 · Source§

impl ToOwned for OsStr

1.0.0 · Source§

impl ToOwned for Path

Source§

impl ToOwned for bstr::bstr::BStr

Source§

impl ToOwned for UriTemplateStr

Source§

impl ToOwned for Asn1ObjectRef

Source§

impl ToOwned for SslContextRef

Source§

impl ToOwned for SslSessionRef

Source§

impl ToOwned for X509Ref

Source§

impl ToOwned for winnow::stream::bstr::BStr

Source§

impl ToOwned for Bytes

Source§

impl<A, B, C, D, E, F, Format> ToOwned for Tuple6VarULE<A, B, C, D, E, F, Format>
where A: VarULE + ?Sized, B: VarULE + ?Sized, C: VarULE + ?Sized, D: VarULE + ?Sized, E: VarULE + ?Sized, F: VarULE + ?Sized, Format: VarZeroVecFormat,

Source§

type Owned = Box<Tuple6VarULE<A, B, C, D, E, F, Format>>

Source§

impl<A, B, C, D, E, Format> ToOwned for Tuple5VarULE<A, B, C, D, E, Format>
where A: VarULE + ?Sized, B: VarULE + ?Sized, C: VarULE + ?Sized, D: VarULE + ?Sized, E: VarULE + ?Sized, Format: VarZeroVecFormat,

Source§

type Owned = Box<Tuple5VarULE<A, B, C, D, E, Format>>

Source§

impl<A, B, C, D, Format> ToOwned for Tuple4VarULE<A, B, C, D, Format>
where A: VarULE + ?Sized, B: VarULE + ?Sized, C: VarULE + ?Sized, D: VarULE + ?Sized, Format: VarZeroVecFormat,

Source§

type Owned = Box<Tuple4VarULE<A, B, C, D, Format>>

Source§

impl<A, B, C, Format> ToOwned for Tuple3VarULE<A, B, C, Format>
where A: VarULE + ?Sized, B: VarULE + ?Sized, C: VarULE + ?Sized, Format: VarZeroVecFormat,

Source§

type Owned = Box<Tuple3VarULE<A, B, C, Format>>

Source§

impl<A, B, Format> ToOwned for Tuple2VarULE<A, B, Format>
where A: VarULE + ?Sized, B: VarULE + ?Sized, Format: VarZeroVecFormat,

Source§

type Owned = Box<Tuple2VarULE<A, B, Format>>

Source§

impl<A, V> ToOwned for VarTupleULE<A, V>
where A: AsULE + 'static, V: VarULE + ?Sized,

Source§

impl<S> ToOwned for RiAbsoluteStr<S>
where S: Spec,

Source§

impl<S> ToOwned for RiFragmentStr<S>
where S: Spec,

Source§

impl<S> ToOwned for RiStr<S>
where S: Spec,

Source§

impl<S> ToOwned for RiQueryStr<S>
where S: Spec,

Source§

impl<S> ToOwned for RiReferenceStr<S>
where S: Spec,

Source§

impl<S> ToOwned for RiRelativeStr<S>
where S: Spec,

1.0.0 · Source§

impl<T> ToOwned for [T]
where T: Clone,

Source§

type Owned = Vec<T>

Source§

impl<T> ToOwned for DsaRef<T>

Source§

type Owned = Dsa<T>

Source§

impl<T> ToOwned for EcKeyRef<T>

Source§

impl<T> ToOwned for PKeyRef<T>

Source§

impl<T> ToOwned for RsaRef<T>

Source§

type Owned = Rsa<T>

1.0.0 · Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T