9 个版本 (5 个重大变更)
| 0.8.0 | 2022年7月20日 |
|---|---|
| 0.7.1 | 2022年6月2日 |
| 0.7.0 | 2022年5月5日 |
| 0.6.0 | 2022年3月18日 |
| 0.1.0 | 2020年10月9日 |
#8 in #dupe
5,887 每月下载量
用于 4 个 crate (通过 gazebo)
42KB
821 行
Gazebo - Rust 工具库
此库包含一系列经过充分测试的工具。大多数模块独立存在,但通过一些代表性的示例
gazebo::prelude::*被这样导入,并为常用类型提供扩展特质。例如,它提供了Vec::map,这相当于iter().map(f).collect::<Vec<_>>(),以及str::split1等与split类似,但仅分割一次。我们希望其中一些函数有一天能进入 Rust 标准库。gazebo::dupe提供了具有成员dupe的特质Dupe,这些成员与Clone完全相同。区别在于不应为重新分配或具有昂贵clone操作的类型实现Dupe- 例如,存在Dupe对于Arc和usize,但不是对于String和Vec。通过使用dupe,可以轻松关注clone调用(应该是很少见的)并忽略成本最小的事物。gazebo::cell::ARef提供了一种类型,这种类型可以是Ref<T>或直接引用&T,具有使它看起来像Ref的操作 -- 允许您将引用统一转换为类似Ref的东西。gazebo::any::AnyLifetime提供了一个类似于Any的特质,但不需要'static生命周期,但代价是更多的模板代码。
Gazebo 提供的功能并不稳定,并且随着新功能的添加(我们发现新的有用功能)和移除(我们发现更好的模式或封装这些想法的库)而不断演变。虽然代码在实用性和设计质量上有所不同,但它都经过了良好的测试和文档化。
使用 Gazebo
您可以通过将 gazebo 添加到您的 [dependencies] 中来依赖 Gazebo,使用标准的 Cargo 模式。
此存储库中有两个有趣的目录是 gazebo(其中包含 Gazebo 本身的源代码)和 gazebo_derive(其中包含对 #[derive(Dupe)] 和其他 Gazebo 特质的支持)。通常您将直接导入 gazebo,但如果您是从 GitHub 获取库,则需要 gazebo_derive 作为必需的传递依赖项。
了解更多信息
您可以在 这个入门视频 中了解更多关于 Gazebo 的信息,或者从以下博客文章中了解
- Rust Nibbles - Gazebo: 序言
- Rust Nibbles - Gazebo: Dupe
- Rust Nibbles - Gazebo: 变体
- Rust Nibbles - Gazebo: AnyLifetime
- Rust Nibbles - Gazebo: 比较
- Rust Nibbles - Gazebo: 强制类型转换和转换
- Rust Nibbles - Gazebo: 帐篷的其余部分
发布版本
- 检查 GitHub Actions 是否为绿色。
- 更新
CHANGELOG.md,其中包含自上次发布以来的更改。 此链接 可以帮助(更新以比较上次发布)。 - 更新两个
Cargo.toml文件中的版本号。如果没有不兼容的更改,则通过 0.0.1 升级,如果有则通过 0.1.0 升级。将gazebo中的依赖项升级到最新的gazebo_derive版本。 - 将
CHANGELOG.md、两个LICENSE文件和README.md文件复制到每个gazebo和gazebo_derive子目录中。 - 运行
cargo publish --allow-dirty --dry-run,然后在gazebo_derive和gazebo目录中,先不带--dry-run。 - 创建一个带有
v0.X.Y的 GitHub 发布版,使用gazebo版本作为名称。
许可证
Gazebo 具有MIT和Apache许可证版本2.0的双重许可,如LICENSE-MIT 和 LICENSE-APACHE 文件所示。
依赖项
~1.5MB
~34K SLoC