Rust 的 Cow 使用

Cow:Copy on Write,只有在发生修改数据的情况下才进行复制。

类型为智能指针的 emun,取值有两种

  • Borrowed,对原始数据的引用
  • Owned,对数据有所有权
let arr: Vec<i32> = vec![1, 2, 3];

// 此时为 arr 的引用
let mut arr_borrowed: Cow<[i32]> = Cow::from(arr); // Borrowed

获得智能指针内部数据的可变引用,进行修改

// 修改前对原始数据进行复制,enum类型改变
arr_borrowed.to_mut()[0] = 1; // Owned

也可以一开始就创建拥有所有权的数据

let arr_owned: Cow<[i32]> = Cow::from(vec![1, 2, 3]); // Owned
posted @ 2023-03-02 15:47  ~哥斯拉~  阅读(313)  评论(0编辑  收藏  举报