#key-management #key-value #key-value-store #rocksdb

nightly the-key

为键值存储提供简单快速的键管理工具

4 个版本

0.1.1 2021年3月12日
0.1.0 2021年2月13日
0.0.5-beta.5 2021年2月5日
0.0.1 2021年1月30日

#2921 in 数据库接口

27 每月下载量

MIT 许可证

16KB
380

the-key

为键值存储提供简单快速的键管理工具

只需将其放入您的 Cargo.toml 中

[dependencies]
the-key = "0.1.0"

参见 docs.rs 上的文档

参见 docs.rs 上的示例

许可证

MIT


lib.rs:

此库为键值存储提供易于使用的键管理API

示例

use the_key::*;
// Define key parts
define_key_part!(Users, &[11, 11]);
define_key_part!(Profiles, &[22, 22]);
define_key_part!(Photos, &[33, 33]);

// Define keys sequences
define_key_seq!(UsersProfiles, [Users, Profiles]);
define_key_seq!(UsersPhotos, [Users, Photos]);

fn main() {
  let user_id = &[81, 81];
  let profiles = UsersProfiles::new();
  let photos = UsersPhotos::new().extend("UserId", user_id);

  let user_profile_key = profiles.create_key(user_id);

  // Debug example
  assert_eq!(
    format!("{:?}", user_profile_key),
    "Users[11, 11] -> Profiles[22, 22] -> Key=[81, 81]",
  );

  // Pretty debug example
  println!("{:#?}", user_profile_key);
  // Users[11, 11]
  // └ Profiles[22, 22]
  //   └ Key=[81, 81]

  assert_eq!(
    format!("{:?}", photos),
    "Users[11, 11] -> Photos[33, 33] -> UserId[81, 81]",
  );

  // User
  assert_eq!(
    user_profile_key.to_vec(),
    vec![11, 11, 22, 22, 81, 81],
  );

  // User's one photo
  assert_eq!(
    photos.create_key(&[99, 99]).to_vec(),
    vec![11, 11, 33, 33, 81, 81, 99, 99],
  );
}

无运行时依赖