回答:
多くの可変変数が必要な場合、それぞれがmutキーワードを必要とし、a = b = c = 0のようなことはできないため、変数を宣言して初期化する多くのスペースを浪費する可能性があります。解決策は、可変配列を宣言することです
let mut a=[0;5];
通常の変数と比較して、使用するたびに3バイト余分に費やします。
a[0]+=1;
しかし、それでも価値がある場合があります。
同じトリックにタプルを使用することは、多くの場合、さらに優れたオプションです。
let mut t=(1,4,"this", 0.5, 'c');
これには、配列を使用するたびにバイトを保存するという利点があります。
t.0=2
また、異なるタイプにすることもできます。欠点は、初期化するためにより多くの文字が必要です。
たとえばで文字列の書式設定をprint!()
使用する場合、番号付きおよび番号なしの両方のフォーマッタを使用して、書式設定する項目ごとに1バイトを保存できます。
例を示すのが最適です:
fn main(){
print!("{}{}{}. Yes, {0}{}{2}. All you other{1}{2}s are just imitating.",
"I'm",
" Slim",
" Shady",
" the real");
}
どの出力:
I'm Slim Shady. Yes, I'm the real Shady. All you other Slim Shadys are just imitating.
したがって、番号なしのフォーマッタは順番にアイテムに割り当てられます。これにより、それらのインデックスをスキップできます。フォーマットするアイテムごとに1つのアンナンバードフォーマッタしか使用できないことに注意してください。
さまざまなことを検討した後、一般的にこれが行を取得する最短の方法だと思います。行には改行があり、トリミング(.trim()
)で削除できます。または、スライスで削除できない場合は削除できます。
let y=&mut"".into();std::io::stdin().read_line(y);
複数行の場合、lines
反復子を使用できますが、反復行は改行で終わりません。タイプを使用可能にBufRead
するためlines
にインポートするには、globインポートが必要ですStdinLock<'_>
。
use std::io::*;let y=stdin();y.lock().lines()