Rust
https://gyazo.com/de90d351c20c4fc28003dbc7e4e5ca39
#プログラミング言語
/icons/link2.iconHP
Qiita.iconhttps://qiita.com/tags/rust
Zenn.iconhttps://zenn.dev/topics/rust
GitHub.iconrust-lang/rust
Twitter.iconhttps://twitter.com/rustlang
Wikipedia.icon
This Week in Rust
ドキュメント
The Rust Programming Language
The Rust Programming Language 日本語
Rustの日本語チュートリアル
The Cargo Book
The Edition Guide
Rust and WebAssembly
Hello wasm-pack!
rust初心者へのガイド
https://github.com/awslabs/aws-sdk-rust
チュートリアル
Tour of Rust
command
code:command
rustup update
rustup show
cargo install cargo-edit
rustup default nightly
rustup default stable
rustup toolchain install nightly-x86_64-unknown-linux-musl
rustup toolchain install 1.43.0-x86_64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-musl --toolchain=nightly
rustup override set nightly-x86_64-unknown-linux-musl
code:docker
RUN apk update && \
apk upgrade && \
apk add --update \
libpq \
libressl \
libressl-dev
RUN mkdir src && \
echo "fn main() {}" > src/main.rs
RUN rustup default nightly
RUN cargo init && \
cargo build
code:docker
WORKDIR /app
COPY Cargo.toml .
COPY Cargo.lock .
# Avoid Compilor Error
RUN mkdir src && \
echo "fn main() {}" > src/main.rs
RUN cargo build
# Development Tools
RUN cargo install cargo-edit
# For Hot Reloading
RUN cargo install catflap cargo-watch
# Migration Tools
RUN cargo install diesel_cli --no-default-features --features mysql
COPY . .
EXPOSE 8080
CMD "catflap", "--", "cargo", "watch", "-x", "run"
検証
Mac
Macに直接RustとCargoが入ってる状態
taargete tool-chain
code:rustup show
$ rustup show
Default host: x86_64-apple-darwin
rustup home: /Users/hisayuki/.rustup
installed toolchains
--------------------
stable-x86_64-apple-darwin
nightly-x86_64-apple-darwin (default)
active toolchain
----------------
nightly-x86_64-apple-darwin (default)
rustc 1.41.0-nightly (412f43ac5 2019-11-24)
パッケージインストール
code:cargo
cargo install cargo-generate cargo-watch wasm-pack
Hello, World!
https://rustwasm.github.io/docs/book/game-of-life/hello-world.html
Build the Project
code:cargo
cargo generate --git https://github.com/rustwasm/wasm-pack-template
cd wasm-game-of-life
wasm-pack build
Putting it into a Web Page
code:npm
npm init wasm-app www
npm install
npm run start
確認先
http://localhost:8080/
docker inspect rust_webassembly_local --format '{{json .NetworkSettings.Ports }}'
Mac + Docker
MacのDockerにRustのコンテナを載せてる状態
コンテナはrust:1.43.0
taargete tool-chain
code:rustup show
# rustup show
Default host: x86_64-unknown-linux-gnu
rustup home: /usr/local/rustup
installed targets for active toolchain
--------------------------------------
wasm32-unknown-unknown
x86_64-unknown-linux-gnu
active toolchain
----------------
1.43.0-x86_64-unknown-linux-gnu (default)
rustc 1.43.0 (4fb7144ed 2020-04-20)
wwwの中のPackage.jsonのstartにhostを0.0.0.0で指定する
code:package.json
"scripts": {
"build": "webpack --config webpack.config.js",
"start": "webpack-dev-server --host 0.0.0.0 --public localhost:8081"
},
Windows + VirtualBox + Ubuntu
Windows + VirtualBox + Ubuntu + Docker
特徴
コンパイル言語
Mozillaの開発
Scalaと比べて
ガーベージコレクションを持たない
どのあたりの企業が使っているか
npm
Dropbox
Firefox
Discord
AWS
サーバレスコンピューティング筆頭の AWS Lambda ですが、ここで動いている 仮想化システム Firecracker は rustで書かれているそうです。
クックパッド
Elixirもつかってる
サイバーエージェント
使う場面が今後にあるか
Lambdaも書ける
カスタムランタイムなので
WebAssembly
参考サイト
Rustの日本語ドキュメント/Japanese Docs for Rust
Docs.rs
https://medium.com/sean3z/building-a-restful-crud-api-with-rust-1867308352d8
https://qiita.com/vraisamis/items/6d1d096c5646c0ad7267
https://sinsoku.hatenablog.com/entry/2019/10/29/213401
https://nulab.com/ja/blog/nulab/rust-yew-webassembly-kanban-app/
https://intellij-rust.github.io/docs/quick-start.html