Trait ToOwned

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) { ... }
}
๐Ÿ”ฌThis is a nightly-only experimental API. (prelude_future)
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

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,

1.0.0 ยท Sourceยง

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