Rust の初心者ですみません。テトリスを考えていて、以下のような配列を考えています。
struct Field([Option<Color>; 10 * 20]);
横方向が10個、縦方向が20個と考えています。
このとき、この配列から、横1行につき1つの配列のスライス &[Option<Color>; 10] となるような、20個の配列を返す関数を作りたいのですが、どのように書くのが一番良いでしょうか?
以下のような関数を考えています。
fn split_lines(&self) -> [&[Option<Color>]; 20]
C言語の考え方をしてしまっていて、Rust らしくない考え方かもしれないと思っています。このような関数を考えるよりも、よりよい考え方があればどうぞご教授下さるよう、どうぞよろしくお願い致します。
追加ですみません。以下のような方法で利用しようと思っているのですが、今の質問方法ではうまくいかないと分かりました。
self.split_lines().enumerate(). 以下操作が続く
初心者の質問ですみませんが、enumerate() が利用できるようにイテレータを返す方法を知りたい、ということが正しい質問の仕方であったと思っています。すみませんが、どうぞよろしくお願いいたします。
chunks メソッドは試しましたか?
https://doc.rust-lang.org/std/primitive.slice.html#method.chunks
Rust でイテレータを返す関数を書こうとすると、型の書き方がわけわからなくなることも多いので、スライスとかVecで返して、受けた側で iter() か into_iter() するのでもいいんじゃないでしょうか。
いろいろな手法を教えてくださって、大変ありがとうございます。つい先日から Rust に関心を持ち始めて、知識がない状態ですので、とても参考になります。時間を割いてコメントをしてくださって、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー