#traits #object #any #original #type #back #parameters

no-std downcast

将特质对象向下转换回其原始类型的特质

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 模式

Download history 386594/week @ 2024-03-14 394350/week @ 2024-03-21 404200/week @ 2024-03-28 411877/week @ 2024-04-04 412783/week @ 2024-04-11 445513/week @ 2024-04-18 430762/week @ 2024-04-25 435200/week @ 2024-05-02 431322/week @ 2024-05-09 462926/week @ 2024-05-16 444693/week @ 2024-05-23 494351/week @ 2024-05-30 466703/week @ 2024-06-06 472358/week @ 2024-06-13 454230/week @ 2024-06-20 395638/week @ 2024-06-27

1,889,961 每月下载量
886 个crate(17 个直接) 中使用

MIT 许可证

16KB
301

downcast   最新版本

一个特质(及实用工具)用于将特质对象向下转换回其原始类型。

示例用法

添加到您的 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 特质。因此,对于 DowncastAny,对于 DowncastSyncAnySync

Q:我能否将特质对象转换为特质对象?

A:不行,目前在安全 Rust 中无法实现 - 并且不安全解决方案也非常复杂。如果您找到了解决方案,请随时分享!

Q:这与 crates.io 上的 downcast-rs crate 有什么区别?

A: 目前还没有,实际上确实如此。存在一个不幸的命名冲突。您可以考虑使用其他crate,因为它维护得更为积极。这个crate的功能已经完善并且功能冻结。希望有一天,Rust语言会使下转型更加容易,我们不再需要这些crate中的任何一个!

无运行时依赖

特性