# 2026.6.4

## Cow

Cow是一种Copy-On-Write，内部只是一种枚举，有借用状态和所有权状态。

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

在内部的to_mut方法中，如果当前状态是借用，会创建一个新的对象再返回可变指针，如果是所有权则直接返回。
**所以这里的修改并不是全局的。**
Cow可以被使用在无法在编译期确定数据到底是静态的还是动态的，或者绝大多数情况是只读，极少数情况需要修改的场景。
