とはいえasナントカが一部のシチュエーションでめんどくさくなることはある(主に競プロ)
let (h, w) = (100usize, 100usize); // 多くの箇所ではusizeとして扱っている
let grid = vec![vec![0; w]; h]; // 横幅w 縦幅h 左上のマスの座標(0,0)のgrid
// 省略(なんかいろいろやる)
let (x, y) = some_func(); // 着目対象となるgridのマスの位置を(usize, usize)で取得
// (x, y)の上下左右のマスを対象になにかやる
for &(dx, dy) = &[(1i32, 0i32), (-1, 0), (0, 1), (0, -1)] {
let (x2, y2) = (x as i32 + dx, y as i32 + dy);
if x2 < 0 || x2 >= w as i32 || y2 < 0 || y2 >= h as i32 {
continue; // x2,y2がgridからはみ出してたら処理飛ばす
}
let (x2, y2) = (x2 as usize, y2 as usize); // できるだけusizeで処理したいので
// 省略(x2, y2を使っていろいろやる)
}
上下左右調べたいときに負の値が出てくるのがめんどくさい
一応workaroundはあって、for以下をこうする手がある
!0が2の補数的には-1として扱えるのでオーバーフローOKな足し算をする
for &(dx, dy) = &[(1usize, 0usize), (!0, 0), (0, 1), (0, !0)] {
let (x2, y2) = (x.wrapping_add(dx), y.wrapping_add(dy));
if x2 >= w || y2 >= h {
continue; // x2,y2がgridからはみ出してたら処理飛ばす
}
// 省略(x2, y2を使っていろいろやる)
}
探検
Rust part12
■ このスレッドは過去ログ倉庫に格納されています
450デフォルトの名無しさん
2021/09/17(金) 23:57:58.10ID:L8yNiQtv■ このスレッドは過去ログ倉庫に格納されています
ニュース
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★3 [少考さん★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★2 [Hitzeschleier★]
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★4 [少考さん★]
- 三谷幸喜氏 温泉嫌いの理由を熱弁「知らない人の股間を素通りしたお湯なんですよ」「おじさんの肛門を通り過ぎたお湯が自分の前に」 [Ailuropoda melanoleuca★]
- 「ヒートテックに寿命があります」ユニクロが明かした“3年劣化”の理由 暖かさが落ちる意外な原因とは [ぐれ★]
- M-1審査員 今年も松本人志の名前なし 9人発表 ミルクボーイ駒場、フット後藤は初 21日決勝 [ひかり★]
- 【悲報】すまん何で日本ってこんなに反『中国』が増えたんだ?ネトウヨどころかそこらの一般人レベルでもゴロゴロいる [483447288]
- あ、出ちゃう、イクッ😫💦🏡
- 【実況】博衣こよりのえちえちドラクエ1&4リメイク🧪★2
- 【高市悲報】万博の未払い業者、アジア大会業務を630億で受注😨その条件であるスポンサー代のため支払いをとばしていた [359965264]
- 拓殖大学教授(小野田母校)「日中対立が立憲の仕掛けで発生したのなら立憲が中国と抗議して問題を解決しろ」高市 [931948549]
- 結局すき家で安定してうまいのは
