Rust
https://gyazo.com/de90d351c20c4fc28003dbc7e4e5ca39
Wikipedia.icon
ドキュメント
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
検証
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!
Build the Project
code:cargo
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
確認先
docker inspect rust_webassembly_local --format '{{json .NetworkSettings.Ports }}'
コンテナは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"
},
特徴
コンパイル言語
Mozillaの開発
Scalaと比べて
ガーベージコレクションを持たない
どのあたりの企業が使っているか
npm
Dropbox
Firefox
Discord
AWS
サーバレスコンピューティング筆頭の AWS Lambda ですが、ここで動いている 仮想化システム Firecracker は rustで書かれているそうです。
クックパッド
Elixirもつかってる
サイバーエージェント
使う場面が今後にあるか
Lambdaも書ける
カスタムランタイムなので
WebAssembly
参考サイト