serde::lib

Trait ToOwned

1.0.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

1.3.0 · Source§

impl ToOwned for CStr

1.0.0 · Source§

impl ToOwned for OsStr

1.0.0 · Source§

impl ToOwned for Path

1.0.0 · Source§

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

Source§

type Owned = Vec<T>

1.0.0 · Source§

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

Source§

type Owned = T

impl ToOwned for GStr

impl ToOwned for CapsRef

impl ToOwned for Caps

impl ToOwned for Eos

impl ToOwned for EventRef

impl ToOwned for Gap

impl ToOwned for Latency

impl ToOwned for Other

impl ToOwned for Qos

impl ToOwned for Seek

impl ToOwned for Segment

impl ToOwned for Step

impl ToOwned for Tag

impl ToOwned for Toc

impl ToOwned for Element

impl ToOwned for Eos

impl ToOwned for Error

impl ToOwned for Info

impl ToOwned for Latency

impl ToOwned for NewClock

impl ToOwned for Progress

impl ToOwned for Qos

impl ToOwned for Redirect

impl ToOwned for StepDone

impl ToOwned for Tag

impl ToOwned for Toc

impl ToOwned for Warning

impl ToOwned for Bitrate

impl ToOwned for Caps

impl ToOwned for Context

impl ToOwned for Convert

impl ToOwned for Custom

impl ToOwned for Drain

impl ToOwned for Duration

impl ToOwned for Formats

impl ToOwned for Latency

impl ToOwned for Other

impl ToOwned for Position

impl ToOwned for QueryRef

impl ToOwned for Seeking

impl ToOwned for Segment

impl ToOwned for Uri

impl ToOwned for TocRef

impl ToOwned for Bytes

impl<I: Invariant> ToOwned for Ck<I>

impl ToOwned for BStr

impl ToOwned for Bytes