10 个版本
0.1.0 | 2021年5月14日 |
---|---|
0.0.9 | 2020年5月31日 |
#1910 在 数据库接口
每月 35 次下载
在 shibboleth 中使用
22KB
230 行
zoea
Zoea 是一个 crate,旨在帮助新手 Rustaceans 入门。
它包含了像 HTTP GET 请求、键值数据库持久化和自然语言处理等常见功能的“简易”按钮。
你管螃蟹的幼虫叫什么?没错!你叫它 Zoea。Zoea 是一个面向新手 Rustaceans 的包,由一个新手 Rustacean 编写。
也许编程对你来说只是兼职。也许你已经学过 Python,想尝试 Rust,因为你听说了很多关于它的炒作。但当你花了两个小时尝试发送一个简单的 HTTP 请求并读取响应后,你可能会想,“!$!@$!@#,Rust 太难了。”
如果你有这种感觉,Zoea 就是你需要的。
把 Zoea 视为一组狡猾的、有些脆弱的“简易”按钮。
Zoea 做了许多不同的事情,优先考虑效率和简单性,而不是健壮性和灵活性。它帮助你构建一些东西,实现 "概念证明",然后成熟为一个更本地的 Rustacean 方法。Zoea 中各个模块之间的唯一共同点是,它们都是作者曾经努力或尝试实现的事情。
新版本 0.1.0
底层已将 get_url 功能更改为使用 ureq 而不是 curl。这是一种更纯粹的 Rust 方法,而不是继承自 C 代码。该方法还应用了一个错误包装器。
简易 HTTP 请求
use zoea::web::get_url;
fn main() {
let url: String = String::from("http://dummy.restapiexample.com/api/v1/employees"); // can be &str or &String
let resp_str: String = get_url(&url).unwrap();
println!("url={}, response={}", &url, &resp_str);
}
简易矩阵运算
Zoea 的 ::mtx 模块在 nalgebra 的周围添加了一些语法糖,以便轻松创建可变大小和类型的矩阵。矩阵乘法和线性代数变得简单。
use zoea::mtx;
// Create a 3x1000 f32 random matrix with values between -1 and 1
// Create a 1000x4 f32 random matrix with values between 5 and 25
let a = mtx::new_f32_random(3, 1000, -1f32, 1f32); //type = mtx::DMatrix \< f32>
let b = mtx::new_f32_random(1000, 4, 5f32, 25f32); // type = mtx::DMatrix \< f32>
// multiply a and b and print the result
let c = a * b;
println!("{}", c);
// take one of the values and assign it to a float
let select_element: f32 = c[(1,3)];
键值数据库持久化
Zoea 的 kv_database (键值) 使用 sqlite 作为后端进行简单操作。
use zoea::kv_database;
fn main() {
let db = "MyTestDatabase"; // can be &str or &String
let key = "Key1"; // can be &str or &String
let value = "Value you want to insert"; // can be &str or &String
// SET the value of key in database db
kv_database::set(&db, &key, &value);
// GET the value of key in database db
let same_value = kv_database::get(&db, &key);
println!("returned value = {}", same_value);
// LIST keys in database db
let keys = kv_database::list_keys(&db);
// GETting an empty key returns an empty string
let non_key = "KeyThatDoesNotExist";
let non_value = kv_database::get(&db, &non_key); // returns String::new();
// DELETE a key in database db
kv_database::delete(&db, &key);
}
自然语言处理 (NLP)
use zoea::nlp;
fn main() {
let sentence = String::from("Today I walked slowly to the garden in San Diego.");
let tokenized_bigrams = nlp::text_token_bigrams(&sentence);
for bigram in tokenized_bigrams {
println!("bigram= {}", bigram);
}
}
新版本 0.0.8+:porter 词干提取
use zoea::nlp;
let port_stems = nlp::porter_stems("Totally dude!");
assert_eq!(port_stems[0], "total");
哈希
use zoea::hash;
fn main() {
let mystring = String::from("Here is some string to hash"); // can be &str or &String
let myhash = hash::hash_string(&mystring);
println!("the hash is = {}", myhash);
}
依赖项
~10MB
~197K SLoC