Skip to content

naokisz/techful-rust-base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TechFUL Rust Base

TechFULでrustの問題を解く時の自分用cargo-generateテンプレートです。
Atcoder Rust Baseのjaブランチを元にして作成しました。

使い方

現時点linux環境のみ対応しています。

必要なクレートのインストール

パッケージの生成

cargo generateコマンドでパッケージを生成します。

$ cargo generate --name sample-problem \
    --git https://github.com/naokisz/techful-rust-base \
    --branch main
  • --name: これから作成するパッケージの名前。好きな名前が付けられる。例:sample-problem
  • --branch: このテンプレートリポジトリのブランチ名。

解答となるプログラムの作成

  1. 使用するクレートの選択

    • デフォルトでproconio_for_1_39_0のみを有効化しています。
    • 手元でテストをする場合はdev-dependenciesの中のクレートをアンコメントしてください。
  2. 使用するクレートのドキュメントの生成

    • 必須ではありませんが、以下のコマンドで依存クレートのドキュメントをビルドし、Webブラウザで開いておくと便利でしょう。

      $ cargo doc --open   # ドキュメントのビルドし、ビルドできたらWebブラウザで開く
      # または
      $ cargo doc          # ドキュメントのビルドのみ行う
  3. プログラムの作成

    • src/main.rsに解答となるプログラムを書きます。
  4. テストケースの作成

    • TechFUL上でテストすることもできますが、手元でテストする事もできます。
    • tests/sample_inputs.rsファイルには、ひな型となるテストケースが用意されています。
    • TechFULの問題文に書かれているサンプル入出力をこのファイルに書き写します。 これによりcargo testでプログラムの動作が確認できるようになります(後述)。
  5. テストケースの実行

    • 以下のコマンドでテストケースを実行し、テストにパスすることを確認します。

      $ cargo test -j 1

      実行例

      $ cargo test -j 1
          ...
          Finished dev [unoptimized + debuginfo] target(s) in 25.31s
           Running target/debug/deps/main-aae3efe8c7e14c29
      
      running 0 tests
      
      test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
      
           Running target/debug/deps/sample_inputs-946c74199de6e6a4
      
      running 3 tests
      No
      test sample2 ... ok
      Yes
      test sample1 ... ok
      No
      test sample3 ... ok
      
      test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
    • -jオプションはテストケース実行の並列数を指定し、デフォルト値はCPUの論理コア数です。 -j 1を指定すると、テストケースが複数あるときに、それらを1つずつ順番に実行するようになります。

    • 上の例ではNoYesのようにプログラムからの標準出力を表示しています。 もしテストケースが並列に実行されると複数のテストケースからの標準出力が混ざって分かりにくくなります。 -j 1の指定は、このようなときに便利です。

  6. プログラムの提出

    • プログラムが完成した時は、cargo make submitでcargo-equipの結果がクリップボードにコピーします。
    • クリップボードの内容をTechFULの提出欄にペーストして提出します。 ACを目指して頑張ってください。

使用可能なクレート

下記の条件に対応しているクレートのみ使用できます.

  • cargo-equipで1ファイルにできる
  • rust 1.39.0に対応している
  • 2015 editionに対応している

ライセンス / License

本リポジトリの内容は MITライセンス のもとで公開されています。 詳しくはLICENSEファイルを参照してください。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published