Rust 笔记 - Cow

364 阅读1分钟

Cow 的全称是:clone on writeCow 能够保存一个对象的引用或拥有一个对象的所有权。当通过to_mut 方法获取对象的可变引用时。如果Cow中保存的是Borrowed值,则会通过to_owned方法获取一个副本,然后更新Cow的值。所以说是,clone on write。下面看一下定义:

enum Cow<'a, B: ?Sized + 'a>
where B: ToOwned
{
    Borrowed(&'a B),
    Owned(<B as ToOwned>::Owned),
}

下面看一个使用实例:

use std::borrow::Cow;

fn get_cow(flag: i32) -> Cow<'static, str> {
    match flag {
        1 => "1".into(),
        2 => "2".into(),
        3 => "3".into(),
        4 => "4".into(),
        _ => format!("{}", "5").into(),
    }
}

fn main() {
    let s = get_cow(1);
    assert_eq!("1", s);
    let s = get_cow(5);
    assert_eq!("5", s);
}