1 个不稳定版本
0.1.0 | 2022年12月27日 |
---|
#27 在 #intern
66 每月下载量
26KB
485 行
symboltable
lib.rs
:
此crate提供了一个 [SymbolTable] 类型,可以存储轻量级的 [Symbols],这可以实现非常快的比较和全序操作。根据底层数据结构,[SymbolTable] 还可能提供从 [Symbol] 到 [String] 的快速转换。最后,[Symbol] 是参数化的,允许您将来自不可比较来源的字符串进行内省,而不会出现混淆。例如,如果您将 Address: Into 和 Username: Into 进行内省,您可以得到一个 Symbol
和 Symbol。这两个 [Symbol] 类型将共享相同的存储和压缩等好处,同时确保您不会混淆不同的 Symbol,就像字符串那样容易混淆:```text fn foo(address: String, username: String); foo(my_username, my_address); // 这在语法上是正确的,但在逻辑上是错误的,因为参数被混淆了。 fn foo2(address: Symbol, username: Symbol); // 当您意外地交换参数位置时,这种表达方式会产生类型错误。
依赖关系
~4–16MB
~162K SLoC