元々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

とやると動くようになる。(自己責任)