3 个版本 (1 个稳定版)
1.0.0 | 2022 年 8 月 21 日 |
---|---|
0.1.1 | 2022 年 7 月 7 日 |
0.1.0 | 2022 年 7 月 7 日 |
#174 在 数据库实现
10KB
238 行
Sleded
一个 sled-ed 数据库。
描述
一个简单的 crate,提供了将持久数据存储到文件的极简 API。由 sled、serde 和 RON 支持。
示例
// Something to store, needs to be serializable.
#[derive(Debug, Serialize, Deserialize)]
pub struct Student {
name: String,
value: usize,
}
impl TableLayout for Student {
// adding the name of the stored table.
fn table_name() -> String {
"student".into()
}
}
// storing an item
let db = open("./db").unwrap();
let table = db.table();
let bob_key = table.push(Student {
name: "bob".into(),
value: 0,
});
// query one item
let bob = table.get(&bob_key);
dbg!(bob);
// query all items
for (key, value) in table.iter() {
let key = key.value(&table);
println!("key: {key}, student: {value:?}");
}
// update items
for key in table.keys() {
table.update(&key, |student| {
if let Some(student) = student {
student.value += 1;
}
})
}
待办事项
- 存储东西。
- 按类型存储表。
- 更好的错误处理。
- 生成迁移。
依赖项
~2–3MB
~55K SLoC