vstd_extra/external/
iter.rs1use vstd::{prelude::*, std_specs::iter::IteratorSpec};
4
5verus! {
6
7#[verifier::external_type_specification]
9#[verifier::external_body]
10#[verifier::reject_recursive_types(T)]
11pub struct ExArrayIntoIter<T, const N: usize>(core::array::IntoIter<T, N>);
12
13pub assume_specification<T, const N: usize>[ <[T; N] as IntoIterator>::into_iter ](
16 array: [T; N],
17) -> (iter: <[T; N] as IntoIterator>::IntoIter)
18 ensures
19 IteratorSpec::obeys_prophetic_iter_laws(&iter),
20 IteratorSpec::will_return_none(&iter),
21 IteratorSpec::remaining(&iter) == array@,
22 IteratorSpec::decrease(&iter) == Some(N as nat),
23;
24
25}