元々JuliaでAtCoderに挑戦していたのですが、違う言語も触ってみたいと思いRustで最近問題を解いています。 ちょっと触った感じの感想として、Rustの良いところとしては、
- 意図しないバグが混入しづらい
- 速い。
- パッケージシステムが使いやすい
- cargo-competeを使うとvscode上でテストや提出ができて楽
逆にちょっと使いづらいと思う点としては、
- 抽象度が高く難しい(気がする)
- Rustだとコードが長くなりやすい。Juliaの方が簡潔に書ける。
- AtCoderのRustのバージョンだと使いたい関数が使えない場合がある。(partition_pointなど)
もう少しRustで挑戦してみようと思います。
追記(2022/10/2) 環境の作り方を忘れるのでメモ
RustのDockerコンテナを用意する
一応pullしてコンテナを作る
% docker pull rust
% docker run -p 8888:8888 --name <name> -it -v $(pwd):/home/jovyan/work rust
コンテナ・VSCodeを整える
いつものおまじない
% apt-get update
% apt-get install git tree
をやっておく。 VSCodeでアタッチして、コンテナの中に入ってフォルダを開く。VSCodeにはrust-analyzerをインストールする。
Rustのバージョンを設定する
現在使用中のRustのバージョンを確認すると、
% rustc -V
rustc 1.64.0 (a55dd71d5 2022-09-19)
2022年9月現在AtCoderで使えるRustは1.42.0である。
% rustup default 1.42.0
% rustc -V
rustc 1.42.0 (b8cedc004 2020-03-09)
これでバージョンを1.42.0にできた。
% cargo run
Compiling yakumo v0.1.0 (/home/jovyan/work)
Finished dev [unoptimized + debuginfo] target(s) in 2.25s
Running `target/debug/yakumo`
Hello, world!
フォーマッターをインストールする。
rustup component add rustfmt
参考
rust-analyzer を直す
VSCodeのシェルのOUTPUT->Rust Analyzer Language Serverを見ると
[ERROR rust_analyzer::lsp_utils] rust-analyzer failed to load workspace: Failed to find sysroot for Cargo.toml file /home/jovyan/work/Cargo.toml. Is rust-src installed?: can't load standard library from sysroot
/usr/local/rustup/toolchains/1.42.0-x86_64-unknown-linux-gnu
(discovered via `rustc --print sysroot`)
try installing the Rust source the same way you installed rustc
のようなエラーになっている。https://github.com/rust-lang/rust-analyzer/pull/10457#issuecomment-947915233 を参考にして
ln -s $(rustc --print sysroot)/lib/rustlib/src/rust/src $(rustc --print sysroot)/lib/rustlib/src/rust/library
とやると動くようになる。(自己責任)