- コンテストを追加
cargo compete new ${contest_name}
でコンテストを追加
- テスト
cd ${contest_name}
cargo compete test ${problem_num}
input! {
n: usize,
mut m: usize, // 変更可能にする
}
input! {
n: usize,
mut m: usize,
v: [usize; n], // 長さnのusizeの配列
a: [[i32; n]; m] // `a` is Vec<Vec<i32>>, (m, n)-matrix.
}
use proconio::input;
use proconio::marker::{Bytes, Chars};
input! {
string: String, // read as String
chars: Chars, // read as Vec<char>
bytes: Bytes, // read as Vec<u8>
}
// if you enter "string chars bytes" to the stdin, they are like this.
assert_eq!(string, "string");
assert_eq!(chars, ['c', 'h', 'a', 'r', 's']);
assert_eq!(bytes, b"bytes");
use proconio::input;
use proconio::marker::Usize1;
input! {
n: usize,
edges: [(Usize1, Usize1); n], // Usize1にすると1-index
}
// if you enter "4 1 3 3 4 6 1 5 3", the decremented value is stored.
assert_eq!(edges[0], (0, 2));
assert_eq!(edges[1], (2, 3));
assert_eq!(edges[2], (5, 0));
assert_eq!(edges[3], (4, 2));
- chars()とかで文字のiter作れる
- vec![‘a’,’i’].into_iter().collect::<String>(); で行ける
- charを連結したものがStringだから。
- &strとString
- &strは、スライス
- Stringは文字列型
- なるべくStringを使ったほうがいろんな処理がしやすい
- でも、”hoge”とかで定義した値は、&strとなる
- rust String &str の変換と、文字列 数値 の変換
String -> &str
let str1: String = String::from("abc");
let str2: &str = &str1;
println!("{}", str2); // "abc"
&str -> String
let str1: &str = "abc";
let str2: String = str1.to_string();
println!("{}", str2); // "abc"
- とりあえず初期化:
let mut vec = Vec::<T>new();
- 指定した値で初期化:
let mut vec = vec![1, 2, 3];
- 空で初期化:
let mut vec = vec![];
- 値を繰り返し使って初期化:
let mut vec = vec![0;5];
vec.push(x)
で追加できる
mutにしておいた上でvec.sort()
でいける
["aaa","iii"].contains(“aaa”);
でいける
vec.iter().min().unwrap()
で取れる
- main.rs以外も実行したい場合
- Rust:Cargoでmain.rs以外のソースファイルのmain()関数を実行する
- cargo.tomlの
bin
に値を追加する