#cow #owned #maybe #version-string #borrowing

maybe-owned

提供类似 std 的 Cow 的类型 MaybeOwned(和 MaybeOwnedMut),实现了 From<T>From<&'a T>,且不需要 ToOwned

5 个版本

使用旧的 Rust 2015

0.3.4 2020 年 5 月 23 日
0.3.3 2020 年 5 月 22 日
0.3.2 2018 年 9 月 8 日
0.3.0 2017 年 9 月 6 日
0.2.0 2017 年 5 月 17 日

#126 in Rust 模式

Download history 54663/week @ 2024-03-14 65413/week @ 2024-03-21 62488/week @ 2024-03-28 53584/week @ 2024-04-04 60592/week @ 2024-04-11 69833/week @ 2024-04-18 71314/week @ 2024-04-25 74444/week @ 2024-05-02 69031/week @ 2024-05-09 82314/week @ 2024-05-16 72288/week @ 2024-05-23 80841/week @ 2024-05-30 66923/week @ 2024-06-06 75746/week @ 2024-06-13 77959/week @ 2024-06-20 65039/week @ 2024-06-27

301,967 每月下载量
用于 291 个 crate(17 个直接使用)

MIT/Apache

36KB
712

maybe-owned 构建状态 Crates.io maybe-owned 维护 许可 许可

提供不同的类型 MaybeOwned<'a,T>,与 std 的 Cow 不同,它实现了 From<T>From<&'a T>,且不需要 ToOwned


此crate提供了一个MaybeOwned<'a,T>枚举。与std::borrow::Cow不同,它实现了From<T>From<&'a T>,并且不需要实现ToOwned。这对于主要消耗T且未实现ToOwned或通过Clone实现ToOwned的API来说可能很好,但它也意味着它的String借用版本是&String而不是&str,这使得它在处理StringVec等情况下性能较差。

文档可以在docs.rs上查看。

示例

请参阅examples目录和文档以获取更完整的示例。

MaybeOwned相较于Cow的主要优势在于API设计,允许API消费者传递T&'a T


//... in a trait implementation
    fn register<D>(&mut self, key: SomeId, data: D)
        where D: Into<MaybeOwned<'a, Data>>
    {
        self.map.entry(key).or_insert_with(||data.into());
    }
//...

//... in usage
    // use owned data
    registry.register(id1, data_owned);
    // use a reference to the data
    registry.register(id2, &data_ref);
    // it ok to use the same reference again
    registry.register(id3, &data_ref);
//...

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证的定义,将按上述方式双重许可,不附加任何额外条款或条件。

变更日志

  • v0.3.4:

    • 添加了make_owned()作为to_mut()的替代品,但也可用于MaybeOwnedMut,并更清楚地说明了其功能。
    • MaybeOwned添加了as_mut()方法,该方法返回一个Option<&mut T>
    • MaybeOwnedMut添加了缺少的BorrowMut实现
  • v0.3.3:

    • 添加了MaybeOwnedMut
  • v0.3.2:

    • 添加了传递的std::ops实现
  • v0.3.1:

    • 添加了serde支持

依赖项

~175KB