#atoms #symbols #atom #elixir

atomize

Elixir 风格的原子/符号

4 个版本

0.1.3 2023年3月11日
0.1.2 2023年3月11日
0.1.1 2020年3月11日
0.1.0 2020年3月11日

#7#atoms

MIT 许可证

4KB
66 代码行

Atomize

Rust 的 Elixir 风格原子

来自 Elixir:原子是一个常量,其值是其自身的名称。某些其他语言称这些为符号。它们通常在遍历不同的值时非常有用。

创建原子

use atomize::{a, Atom};

fn main() {
    // `a!(apple)` will always create the same value
    let apple: Atom = a!(apple);

    assert_eq!(apple, a!(apple));
}

原子等价

原子以 O(1) 的时间进行比较。实际上,它们编译为简单的 u64,因此比较是在单个 x64 操作中完成的

assert_eq!(a!(orange), a!(orange));
assert_ne!(a!(orange), a!(apple));

混合

原子也可以混合使用

let apple_and_orange = a!(apple) + a!(orange);

assert_eq!(apple_and_orange, a!(orange) + a!(apple));

依赖项

~1.5MB
~35K SLoC