Метод into_owned
Метод into_owned преобразует умный указатель
Cow в собственное значение типа String
или Vec. Если внутри Cow хранится
заимствованный вариант Borrowed, метод выполняет
клонирование данных и возвращает owned-значение. Если же
внутри уже хранится вариант Owned, метод просто
извлекает его без дополнительного клонирования. Параметров
метод не принимает.
Синтаксис
cow.into_owned()
Пример
Давайте создадим Cow с заимствованным значением
и преобразуем его в owned-строку:
use std::borrow::Cow;
fn main()
{
let borrowed: Cow<str> = Cow::Borrowed("abcde");
let owned: String = borrowed.into_owned();
println!("{}", owned);
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим Cow с owned-значением и
преобразуем его в owned-строку:
use std::borrow::Cow;
fn main()
{
let owned_cow: Cow<str> = Cow::Owned(String::from("12345"));
let owned: String = owned_cow.into_owned();
println!("{}", owned);
}
Результат выполнения кода:
"12345"
Пример
Давайте применим into_owned к Cow
с вектором чисел:
use std::borrow::Cow;
fn main()
{
let borrowed: Cow<[i32]> = Cow::Borrowed(&[1, 2, 3, 4, 5]);
let owned: Vec<i32> = borrowed.into_owned();
println!("{:?}", owned);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]