#traits #rc #deref #box #address #type #moved

no-std ccl_stable_deref_trait

一个不安全的标记特质,用于像 Box 和 Rc 这样的类型,即使移动后也能引用到稳定的地址,因此可以与 owning_ref 和 rental 等库一起使用。

3 个稳定版本

使用旧的 Rust 2015

1.0.2 2019年7月16日
1.0.1 2019年6月22日
1.0.0 2019年6月19日

#10#deref


ccl_owning_ref 使用

MIT/Apache

13KB
64 代码行数(不包括注释)

这是一个原始包的分支,以启用一些特定功能。如有疑问或请求,请联系我。

该包定义了一个不安全的标记特质 StableDeref,用于将容器类型引用到固定地址,即使包含类型被移动,这个地址也是有效的。例如,Box、Vec、Rc、Arc 和 String 实现了这个特质。此外,它还定义了 CloneStableDeref,用于像 Rc 这样的类型,其中克隆引用到相同的地址。

它旨在由如 owning_ref 和 rental 等包使用,以及希望使他们的代码与这些包互操作的库作者。例如,如果您编写了一个自定义 Vec 类型,您可以实现 StableDeref,然后用户将能够与 owning_ref 和 rental 一起使用您的自定义 Vec 类型。

可以通过禁用默认功能(特别是 "std")来启用 no_std 支持。在这种情况下,特质将不会为上述 std 类型实现,但您仍然可以使用它为自己的类型。

启用 "alloc" 功能(禁用默认功能)以使此特质在内置的 alloc 包中实现上述类型

  • alloc::boxed::Box
  • alloc::vec::Vec
  • alloc::rc::Rc
  • alloc::arc::Arc
  • alloc::string::String

例如,可以通过以下命令使用 alloc 支持构建此包:cargo build --no-default-features --features alloc

或者将其作为以下 Cargo.toml 依赖项添加

[dependencies.stable_deref_trait]
version = "<version>"
default-features = false
features = [ "alloc" ]

依赖项

~0.6–1MB
~14K SLoC