2 个版本
0.1.1 | 2023年4月3日 |
---|---|
0.1.0 | 2023年4月2日 |
在 #interner 中排名第 10
12KB
219 行代码,不包括注释
ry_interner
包。
从 Ry 编程语言编译器实现了字符串互斥锁的 Rust 代码中提取了 327 行代码。
示例
fn main() {
let interner = Interner::default();
let s1 = interner.get_or_intern("test");
let s2 = interner.get_or_intern("test");
assert_eq!(s1, s2);
assert_eq!(interner.resolve(0).unwrap(), "test");
}
lib.rs
:
327 行 Rust 代码,实现了 Ry 编程语言编译器的字符串互斥锁。
该包缓存字符串并与之关联唯一符号。这允许对底层互斥字符串进行常数时间的比较和查找。
示例
互斥
use ry_interner::Interner;
let mut interner = Interner::default();
let symbol0 = interner.get_or_intern("A");
let symbol1 = interner.get_or_intern("B");
let symbol2 = interner.get_or_intern("C");
let symbol3 = interner.get_or_intern("A");
assert_ne!(symbol0, symbol1);
assert_ne!(symbol0, symbol2);
assert_ne!(symbol1, symbol2);
assert_eq!(symbol0, symbol3);
解析符号
use ry_interner::Interner;
let mut interner = Interner::default();
let symbol0 = interner.get_or_intern("A");
let symbol1 = interner.get_or_intern("B");
assert_eq!(interner.resolve(0), Some("A"));
assert_eq!(interner.resolve(1), Some("B"));
assert_eq!(interner.resolve(2), None);
依赖
~1.5MB
~24K SLoC