0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

イテレータの最初のN個・最後のN個を取得する

Posted at

イテレータの最初のN個の要素を取得するにはtakeを利用します。

let a = vec![0, 1, 2, 3, 4, 5];
let mut iter = a.iter().take(3);
assert_eq!(iter.next(), Some(&0));
assert_eq!(iter.next(), Some(&1));
assert_eq!(iter.next(), Some(&2));
assert_eq!(iter.next(), None);

一方、イテレータの最後のN個の要素を取得するにはどうすればよいでしょうか?

まず、標準ライブラリではrevtakeを組み合わせます。

let a = vec![0, 1, 2, 3, 4, 5];
let mut iter = a.iter().rev().take(3);
assert_eq!(iter.next(), Some(&5));
assert_eq!(iter.next(), Some(&4));
assert_eq!(iter.next(), Some(&3));
assert_eq!(iter.next(), None);

itertoolsライブラリが導入されている環境であればtailを利用します。


let a = vec![0, 1, 2, 3, 4, 5];
let mut iter = a.iter().tail(3);
assert_eq!(iter.next(), Some(&3));
assert_eq!(iter.next(), Some(&4));
assert_eq!(iter.next(), Some(&5));
assert_eq!(iter.next(), None);

環境情報

  • rustc 1.85.1 (4eb161250 2025-03-15)
  • itertools = "0.14.0"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?