6个版本

0.1.5 2023年3月20日
0.1.4 2022年7月18日

#26 in #leveldb


用于 2 个crate(通过 leveldb-orm

MIT 许可证

7KB
88

使用 LeveldbOrm + leveldb_keyleveldb-orm 中自动实现特质

#[derive(LeveldbOrm)]
#[leveldb_key(executable, args)]
struct Command {
    pub executable: u8,
    pub args: Vec<String>,
    pub current_dir: Option<String>,
}

生成代码

impl<'a> leveldb_orm::KeyOrm<'a> for Command {
    type KeyType = (u8, Vec<String>);
    type KeyTypeRef = (&'a u8, &'a Vec<String>);
    #[inline]
    fn key(
        &self,
    ) -> std::result::Result<leveldb_orm::EncodedKey<Self>, Box<dyn std::error::Error>> {
        Self::encode_key((&self.executable, &self.args))
    }
}

lib.rs:

使用 LeveldbOrm + leveldb_keyleveldb-orm 中自动实现特质

use leveldb_orm::LeveldbOrm;

#[derive(LeveldbOrm)]
#[leveldb_key(executable, args)]
struct Command {
    pub executable: u8,
    pub args: Vec<String>,
    pub current_dir: Option<String>,
}
 
// Generate code

// impl<'a> leveldb_orm::KeyOrm<'a> for Command {
//     type KeyType = (u8, Vec<String>);
//     type KeyTypeRef = (&'a u8, &'a Vec<String>);
//     #[inline]
//     fn key(
//         &self,
//     ) -> std::result::Result<leveldb_orm::EncodedKey<Self>, Box<dyn std::error::Error>> {
//         Self::encode_key((&self.executable, &self.args))
//     }
// }

依赖项

~300–760KB
~18K SLoC