20 个版本 (11 个重大更新)
0.11.0 | 2021 年 11 月 9 日 |
---|---|
0.10.0 | 2019 年 2 月 13 日 |
0.9.2 | 2018 年 2 月 15 日 |
0.9.1 | 2017 年 9 月 16 日 |
0.2.1 | 2015 年 10 月 26 日 |
#362 in Rust 模式
1,889,961 每月下载量
在 886 个crate(17 个直接) 中使用
16KB
301 行
downcast
一个特质(及实用工具)用于将特质对象向下转换回其原始类型。
链接到 API 文档
示例用法
添加到您的 Cargo.toml
[dependencies]
downcast = "0.12"
添加到您的 crate 根目录
#[macro_use]
extern crate downcast;
- simple 展示了此库最简单的用法。
- with_params 展示了如何处理具有类型参数的特质。
- sync_service 展示了如何向下转换
Arc
-指针。
构建功能
- std (默认) 启用所有需要标准库的功能 (
Downcast::downcast()
)。 - nightly 启用所有需要 rust nightly 的功能 (
Any::type_name()
)。
常见问题解答
Q:我得到 the size for values of type XXX cannot be known at compile time
错误,我错在哪里?
A:请确保您使用了相应的 Any
约束,以及 Downcast
特质。因此,对于 Downcast
是 Any
,对于 DowncastSync
是 AnySync
。
Q:我能否将特质对象转换为特质对象?
A:不行,目前在安全 Rust 中无法实现 - 并且不安全解决方案也非常复杂。如果您找到了解决方案,请随时分享!
Q:这与 crates.io 上的 downcast-rs
crate 有什么区别?
A: 目前还没有,实际上确实如此。存在一个不幸的命名冲突。您可以考虑使用其他crate,因为它维护得更为积极。这个crate的功能已经完善并且功能冻结。希望有一天,Rust语言会使下转型更加容易,我们不再需要这些crate中的任何一个!