Zooming in on Observability with Rust and eBPF https://blog.redsift.com/labs/zooming-in-on-observability/
Lambda服务的简易webappA sample webapp project which deploys on AWS Lambda https://github.com/bachrc/rust-aws-lambda
Lambda服务的简易webapp。因为得到SilentByte的启发:https://silentbyte.com/writing-aws-lambda-functions-in-rustNotes on Parsing in Rust https://blog.wesleyac.com/posts/rust-parsing
slip 0.1.0: protect your error strings against reverse-engineering https://hub.docker.com/r/michaelfbryan/mdbook-docker-image
cargo install --path unslip
unslip key
### Linuxexport SLIP_KEY=<your key, without quotations>#### Windowsset SLIP_KEY=<your key, without quotations>Type-level Rust编程
Type-level Programming in Rust http://willcrichton.net/notes/type-level-programming/
Github Actions to build Rust Binaries Automatically https://github.com/zackify/flydb/blob/master/.github/workflows/build-binary.yml
name: Build Binarieson:release:types: # This configuration does not affect the page_build event above- createdjobs:build_for_mac:name: MacOSruns-on: macos-10.15steps:- uses: actions/checkout@master- uses: actions-rs/cargo@v1with:command: buildargs: --release- name: Rename binaryrun: mv target/release/flydb flydb-macos64- name: Upload to releaseenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}run: |curl \-f \-sSL \-XPOST \-H "Authorization: token $GITHUB_TOKEN" \-H "Content-Length: $(stat -f%z flydb-macos64)" \-H "Content-Type: application/octet-stream" \--upload-file "flydb-macos64" \"https://uploads.github.com/repos/$GITHUB_REPOSITORY/releases/$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH)/assets?name=flydb-macos64"build_for_pi:name: Raspberry Piruns-on: ubuntu-18.04steps:- uses: actions/checkout@master- uses: actions-rs/toolchain@v1with:toolchain: stabletarget: armv7-unknown-linux-gnueabihfoverride: true- uses: actions-rs/cargo@v1with:use-cross: truecommand: buildargs: --release --target armv7-unknown-linux-gnueabihf- name: Rename binaryrun: mv target/armv7-unknown-linux-gnueabihf/release/flydb flydb-armv7-pi- name: Upload to releaseuses: JasonEtco/upload-to-release@d648f1babf776de9cad881320bd9e9818fc3b262with:args: flydb-armv7-pi application/octet-streamenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}build_for_android:name: Androidruns-on: ubuntu-18.04steps:- uses: actions/checkout@master- uses: actions-rs/toolchain@v1with:toolchain: stabletarget: aarch64-linux-androidoverride: true- uses: actions-rs/cargo@v1with:use-cross: truecommand: buildargs: --release --target aarch64-linux-android- name: Rename binaryrun: mv target/aarch64-linux-android/release/flydb flydb-linux-android- name: Upload to releaseuses: JasonEtco/upload-to-release@d648f1babf776de9cad881320bd9e9818fc3b262with:args: flydb-linux-android application/octet-streamenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}build_for_linux:name: Linuxruns-on: ubuntu-18.04steps:- uses: actions/checkout@master- uses: actions-rs/cargo@v1with:command: buildargs: --release- name: Rename binaryrun: mv target/release/flydb flydb-linux-amd64- name: Upload to releaseuses: JasonEtco/upload-to-release@d648f1babf776de9cad881320bd9e9818fc3b262with:args: flydb-linux-amd64 application/octet-streamenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
rust语言学习笔记:理解structs
Understanding rust lang - structs notes https://www.staszewski.me/rust-struct-notes/
Kamil Staszewski 的Rust语言学习笔记。struct:struct可以让我们创建有内容的数据结构,struct数据结构的写法有点类似Typescript语言中的interface接口,
当然很多别的编程语言的接口的实现也很类似:struct Player {
name: String,
health: u32,
mana: u32,
}
struct我们就要给它创建一个实例,我们依照它的定义用K/V方式给它赋值:let player1 = Player {
name: String::from("Kamil"),
health: 100,
mana: 100,
};
println!宏来打印出来,否则会遇到Player doesn't implement std::fmt::Display: Player cannot be formatted with the default formatte这样的错误。因为这里struct还没有实现它的trait,这就需要我们参照官方文档自己来实现一个。我们可以加这样的注释#[derive(Debug)]也可以用缺省的格式:?,或者在println!宏里面用花括号来表示缺省格式。然后我们可以试一试:#[derive(Debug)] // annotationstruct Player {name: String,health: u32,mana: u32,}let player1 = Player {name: String::from("Kamil"),health: 100,mana: 100,};data {:?}, player1);
let player1 = Player {name: String::from("Kamil"),health: 100,mana: 100,};let player2 = Player {name: String::from("Gustav"),..player1}; // player2 has the same health and mana values as player1
mut关键字保证数据结构的实例可以更改:let mut player1 = Player {name: String::from("Kamil"),health: 100,mana: 100,};player1.name = String::from("Some other name");
struct添加函数(方法):&self,这个跟JS的this和Python的self非常类似。
我们必须用impl关键字并加上数据结构的名字来'实现'实例,记住我们在函数内部用&self来应用数据机构本身:struct Player {name: String,health: u32,mana: u32,}impl Player {fn multiply_by(&self, n: u32) -> u32 {* n}}let player1 = Player {name: String::from("Kamil"),health: 100,mana: 100,};multipied health {:?}", player1.multiply_by(3));
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。