来Qdrant参与贡献
Qdrant OSS 团队现在用一种新方法来挑选加入 Rust 团队的合适候选人——让候选人先做出贡献。如果有一个开放的 Rust 开发者职位,你有兴趣申请,可以从 GitHub Issue 中选择一个任务,解决它,然后提个 PR。如果你的贡献质量好,核心团队接受了 PR,你将受邀参加面试。如果这也顺利进行,你很可能会收到加入 Qdrant 团队的邀请。如果不行... 那好吧,Qdrant 将会为你的贡献付费。
当然,即便不用做求职申请,也可以去做某些标有“bounty”标签的任务来获取奖金:https://github.com/qdrant/qdrant/issues?q=label%3A%22%F0%9F%92%8E+Bounty%22
这真的是个好方法,也是个好消息,赶紧行动起来吧。
Qdrant 是一个面向下一代AI应用的向量数据库。
reefdb
ReefDB是一个使用Rust编写的极简主义、内存和磁盘数据库管理系统,实现了基本的SQL查询功能和全文搜索。
主要功能:
支持内存或磁盘存储
基本的SQL语句(CREATE TABLE,INSERT,SELECT,UPDATE,DELETE)
INNER JOIN 支持
使用倒排索引的全文搜索
自定义数据类型(INTEGER,TEXT,FTS_TEXT)
以磁盘存储为例:
use reefdb::OnDiskReefDB;
fn main() {
let kv_path = "kv.db";
let index = "index.bin";
let mut db = OnDiskReefDB::new(kv_path.to_string(), index.to_string());
let queries = vec![
"CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)",
"INSERT INTO users VALUES (1, 'Alice')",
"INSERT INTO users VALUES (2, 'Bob')",
"SELECT * FROM users WHERE id = 1",
];
for query in queries {
let result = db.query(query);
println!("Result: {:?}", result);
}
}
GitHub: https://github.com/sachaarbonel/reefdb
typedmap
类型化的HashMap,允许根据Key类型定义不同的值类型。在需要单个 HashMap 中存储不同的键值对时非常有用。
基本用法:
use typedmap::{TypedMap, TypedMapKey};
// 定义key的类型
#[derive(Debug, PartialEq, Eq, Hash)]
struct Dog{name: String};
#[derive(Debug, PartialEq, Eq, Hash)]
struct Cat{name: String};
struct Bark{volume: u32};
struct Mew{pitch: f32};
// 定义key对应的value的类型
impl TypedMapKey for Dog {
type Value = Bark;
}
impl TypedMapKey for Cat {
type Value = Mew;
}
// 创建一个新的map
let mut animal_sounds: TypedMap = TypedMap::new();
// 插入数据
animal_sounds.insert(Dog { name: "Spiky".into() }, Bark { volume: 80 });
animal_sounds.insert(Cat { name: "Spot".into() }, Mew { pitch: 12000.0 });
// 获取Dog key的值Bark.
let spiky_volume = animal_sounds.get(&Dog { name: "Spiky".into() }).unwrap().volume;
assert_eq!(spiky_volume, 80);
GitHub: https://github.com/kodieg/typedmap/
stereokit-rs
Stereokit 的Rust 绑定和wrapper。
StereoKit是一个易于使用的开源虚拟现实库,专为创建 VR、AR 和 XR 体验而设计。
示例:
fn basic() {
let sk = crate::SettingsBuilder::new()
.app_name("StereoKit Example App")
.init()
.unwrap();
let model = sk.model_create_mesh(crate::Mesh::CUBE, crate::Material::DEFAULT);
let mut position = glam::Vec3::default();
let mut redness = 0.0;
sk.run(|sk| {
position.x = sk.time_total_f32().sin();
position.y = sk.time_total_f32().cos();
redness = sk.time_total_f32().sin() - 0.3;
sk.model_draw(
&model,
glam::Mat4::from_scale_rotation_translation(
glam::Vec3::new(1.0, 1.0, 1.0),
glam::Quat::IDENTITY,
position,
),
crate::Color128::new(redness, 0.1, 0.9, 1.0),
crate::RenderLayer::default(),
);
}, |_| {});
}
GitHub: https://github.com/MalekiRe/stereokit-rs
proqnt
Proquint 可用于以更易读的方式编码二进制数据,例如 IP 地址,公钥和 UUID。
proquint 是一种可读的五个字母的字符串,用于编码唯一的 16 位整数。
使用示例:
use std::net::Ipv4Addr;
use proqnt::{FromProquints, IntoProquints, Proquint};
assert_eq!(
format!("{}", Ipv4Addr::new(127, 0, 0, 1).proquint_encode()),
"lusab-babad"
);
assert!(
Ipv4Addr::new(127, 0, 0, 1).proquint_digits().eq([
u16::parse_proquints("lusab").unwrap(),
u16::parse_proquints("babad").unwrap()
].into_iter())
);
assert_eq!(
format!("{}", [127u8, 0, 0, 1].proquint_encode()),
"lusab-babad"
);
assert!(
Ipv4Addr::new(127, 0, 0, 1).proquint_encode().into_iter().eq([
"lusab".parse::<Proquint>().unwrap(),
"babad".parse::<Proquint>().unwrap()
].into_iter())
);
GitHub:https://github.com/imbrem/proqnt
From 日报小组 长琴
社区学习交流平台订阅:
Rustcc 论坛:支持 rss
微信公众号:Rust 语言中文社区