#不可变 #复制 #rc #低成本克隆

implicit-clone

不可变类型和类似于 Copy 的隐式克隆 trait

20 个版本

0.5.0 2024 年 7 月 12 日
0.4.9 2024 年 2 月 21 日
0.4.8 2023 年 11 月 19 日
0.4.0 2023 年 7 月 29 日
0.3.2 2022 年 7 月 12 日

157Rust 模式 中排名

Download history 7274/week @ 2024-04-24 6972/week @ 2024-05-01 6519/week @ 2024-05-08 7063/week @ 2024-05-15 6607/week @ 2024-05-22 7706/week @ 2024-05-29 6892/week @ 2024-06-05 6593/week @ 2024-06-12 6647/week @ 2024-06-19 7180/week @ 2024-06-26 5394/week @ 2024-07-03 6865/week @ 2024-07-10 8238/week @ 2024-07-17 7811/week @ 2024-07-24 7797/week @ 2024-07-31 8541/week @ 2024-08-07

每月 33,551 次下载
用于 154 个 crate(直接使用 11 个)

MIT/Apache

59KB
1K SLoC

Rust Latest Version License Docs.rs LOC Dependency Status

隐式克隆

此库引入了标记 trait ImplicitClone,用于成本低廉且应允许隐式克隆的类型。它使得使用此 crate 的宿主库能够拥有 Copy 的语法,而实际上调用的是 Clone 的实现(通常在宏中执行此语法时)。

思路是,你必须在你成本低廉的类型上实现此 trait,然后使用该 trait 的宿主库将允许用户传递你的类型值,它们将自动进行克隆。

隐式克隆已实现的标准类型

此 crate 属于 rust-patterns 类别,但实际上这是一个 Rust 反模式。在 Rust 中,用户应始终自己处理借用和所有权。尽管如此,有时这种模式是所需的。例如,依赖于从祖先传播属性到多个子代的 UI 框架将始终需要使用 Rc 类型来低成本且简洁地更新每个子组件。这在类似 React 的框架(如 Yew)中就是这样。

此crate还提供了一些方便的不可变类型来处理易于复制的字符串、数组和映射,您可以在模块 syncunsync 中找到它们。这些类型实现了 ImplicitClone 并只包含实现 ImplicitClone 的类型。 一个显著的特性:对这些类型的迭代产生项的副本而不是引用。 这在使用类似React的框架时特别有用。

依赖项

~0–335KB