Метод to_owned
Метод to_owned создаёт собственную (владеющую) копию данных
из заимствованного значения. Он вызывается на срезе или ссылке
и возвращает новый объект, который владеет своими данными.
Параметров метод не принимает.
Метод to_owned является частью трейта ToOwned.
Для строк &str он возвращает String,
для срезов &[T] - вектор Vec<T>,
где T реализует трейт Clone.
Синтаксис
value.to_owned()
Пример
Давайте преобразуем строковый срез "abcde"
в собственную строку String:
fn main()
{
let s = "abcde";
let owned: String = s.to_owned();
println!("{}", owned);
}
Результат выполнения кода:
"abcde"
Пример
Давайте преобразуем срез чисел в собственный вектор:
fn main()
{
let slice: &[i32] = &[1, 2, 3, 4, 5];
let owned: Vec<i32> = slice.to_owned();
println!("{:?}", owned);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте покажем, что после получения собственной копии исходные данные можно удалить, а копия останется доступной:
fn main()
{
let owned: String = {
let s = "12345";
s.to_owned()
};
println!("{}", owned);
}
Результат выполнения кода:
"12345"