作者之前寫過 MUDdy 像MUD的純文字互動遊戲,但只是單機的 Read more
最近也用Rust寫了 RCRPG
Read more
這是一個 Rosetta Code 裡的題目,Rosetta Code是一個把基礎的程式問題用各種語言實作一遍的網站,大家有興趣也可以來幫忙Rust的實作更完整。
Read more
libfastwfc 是一個學術用波函數折疊的庫
目前還非常的小 codebase 也才400行 應該是可以直接用Rust快速重寫的庫
Read more
Read more
這個團隊使用rust來開發各種功能,且用UE4開發他們的場景Demo, 非常厲害的團隊。
Read more github youtube
給定函數 Test:(T) - > Bool,它會試圖找到一個回傳false或導致崩潰的T類型的值。
比如你有個長的很醜的函數長這樣
extern crate my_library;
extern crate fuzzcheck;
use fuzzcheck::fuzzer;
extern crate fuzzcheck_input;
use fuzzcheck_input::integer::IntegerGenerator;
use fuzzcheck_input::vector::VectorGenerator;
fn test(input: &Vec<u8>) -> bool {
// property test goes here
if
input.len() > 7 &&
input[0] == 0 &&
input[1] == 167 &&
input[2] == 200 &&
input[3] == 103 &&
input[4] == 56 &&
input[5] == 78 &&
input[6] == 2 &&
input[7] == 254
{
false
}
else {
true
}
}
fn main() {
let u8_gen = IntegerGenerator::<u8>::new();
let vec_gen = VectorGenerator::new(u8_gen);
let _ = fuzzer::launch(test, vec_gen);
}
然後去給他跑,他就跑出一個
NEW 180086 score: 493 pool: 48 exec/s: 132713 cplx: 79792
NEW 表示將新輸入添加到有興趣的輸入池中 180086 是到目前為止執行的迭代次數 得分:493 是池中所有輸入引起的總代碼覆蓋率的度量 pool:48 是池中的輸入數 exec / s:132713 是每秒執行的平均迭代次數 cplx:79792 是池中輸入的平均複雜度
最後他會找到return false的條件
================ TEST FAILED ================
188241 score: 495 pool: 51 exec/s: 132659 cplx: 81373
Saving at "./fuzz/fuzz_targets/target1/artifacts/1c10daa13e9b1721.json"
而這個1c10daa13e9b1721.json檔裡面會長這樣 [0, 167, 200, 103, 56, 78, 2, 254]
跟我們的程式碼條件一樣
input.len() > 7 &&
input[0] == 0 &&
input[1] == 167 &&
input[2] == 200 &&
input[3] == 103 &&
input[4] == 56 &&
input[5] == 78 &&
input[6] == 2 &&
input[7] == 254
Read more
我有大量(1000+)個protobuf類型分佈在數百個不同的.proto文件中。
不知道有什麼庫可以一次幫這所有的 .proto 文件全部轉成 rust 宣告?
目前已經試過 prost, rust-protobuf 但感覺差強人意
prost的問題是沒辨法處理大量複雜相依的 .proto
rust-protobuf可以處理大量複雜相依的 .proto,但他發現一個問題發了一個PR但沒人理
他覺得這些專案的維護者是不是不想讓他們的庫愈來愈好?