# 1.0.0[−][src]Trait std::borrow::ToOwned

    pub trait ToOwned {
        type Owned: Borrow<Self>;
        #[must_use = "cloning is often expensive and is not expected to have side effects"]
    fn to_owned(&self) -> Self::Owned;

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

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.

## Associated Types

### `type Owned: Borrow<Self>`

## Required Methods

### `
#[must_use = "cloning is often expensive and is not expected to have side effects"]
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();Run

## Provided Methods

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

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

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);Run

## Implementors

###

`impl ToOwned for str`

[src]

#### `type Owned = String`

####

`fn to_owned(&self) -> String`

[src]

####

`fn clone_into(&self, target: &mut String)`

[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

###

`impl ToOwned for CStr`

[src]

#### `type Owned = CString`

####

`fn to_owned(&self) -> CString`

[src]

####

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

[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

###

`impl ToOwned for OsStr`

[src]

#### `type Owned = OsString`

####

`fn to_owned(&self) -> OsString`

[src]

####

`fn clone_into(&self, target: &mut OsString)`

[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

###

`impl ToOwned for Path`

[src]

#### `type Owned = PathBuf`

####

`fn to_owned(&self) -> PathBuf`

[src]

####

`fn clone_into(&self, target: &mut PathBuf)`

[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

###

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

[src]

#### `type Owned = Vec<T>`

####
ⓘImportant traits for Vec<u8>

### Important traits for Vec<u8>

`impl Write for Vec<u8>`

`fn to_owned(&self) -> Vec<T>`

[src]

####

`fn clone_into(&self, target: &mut Vec<T>)`

[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

###

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

[src]

#### `type Owned = T`

####

`fn to_owned(&self) -> T`

[src]

####

`fn clone_into(&self, target: &mut T)`

[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into` #41263)

recently added

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)