РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
499 of 1245 menu

Вариант Owned класса Cow

Вариант Owned класса Cow представляет собой одну из двух возможных разновидностей этого умного указателя. Cow расшифровывается как Clone-on-Write (клонирование при записи) и позволяет хранить либо заимствованные данные, либо собственные. Вариант Owned соответствует случаю, когда Cow владеет своими данными. Параметром вариант принимает значение типа, которым владеет умный указатель, например String или Vec<T>.

Когда Cow находится в состоянии Owned, любые изменения данных не требуют клонирования, поскольку данные уже принадлежат указателю. Это делает вариант Owned удобным для случаев, когда нужно модифицировать данные без дополнительных затрат на копирование.

Синтаксис

Cow::Owned(value)

Здесь value - это значение типа, которым владеет Cow. Например, для Cow<str> таким значением будет String, а для Cow<[i32]> - Vec<i32>.

Пример

Давайте создадим Cow в варианте Owned и проверим, что он содержит собственные данные:

use std::borrow::Cow; fn main() { let cow: Cow<str> = Cow::Owned(String::from("abcde")); println!("{}", cow); println!("{}", cow.is_owned()); }

Результат выполнения кода:

"abcde" true

Пример

Давайте создадим Cow с вектором в варианте Owned и изменим его содержимое:

use std::borrow::Cow; fn main() { let mut cow: Cow<[i32]> = Cow::Owned(vec![1, 2, 3, 4, 5]); cow.to_mut().push(6); println!("{:?}", cow); }

Результат выполнения кода:

[1, 2, 3, 4, 5, 6]

Пример

Давайте сравним вариант Owned с вариантом Borrowed, чтобы увидеть разницу между ними:

use std::borrow::Cow; fn main() { let owned: Cow<str> = Cow::Owned(String::from("12345")); let borrowed: Cow<str> = Cow::Borrowed("12345"); println!("{}", owned.is_owned()); println!("{}", borrowed.is_owned()); }

Результат выполнения кода:

true false

Смотрите также

  • класс Cow,
    который представляет умный указатель с клонированием при записи
  • вариант Borrowed,
    который хранит заимствованные данные
  • метод into_owned,
    который преобразует Cow в собственное значение
  • метод to_owned,
    который создает собственную копию данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить