rune/modules/
slice.rs

1//! Types relates to working with slices.
2
3use crate as rune;
4use crate::runtime::slice::Iter;
5use crate::{ContextError, Module};
6
7/// Types related to working with contiguous slices.
8///
9/// # Examples
10///
11/// ```rune
12/// let it = [10, 20].iter();
13///
14/// assert_eq!(it.next(), Some(10));
15/// assert_eq!(it.next(), Some(20));
16/// assert_eq!(it.next(), None);
17/// ```
18#[rune::module(::std::slice)]
19pub fn module() -> Result<Module, ContextError> {
20    let mut m = Module::from_meta(self::module_meta)?;
21
22    m.ty::<Iter>()?;
23    m.function_meta(Iter::next__meta)?;
24    m.function_meta(Iter::size_hint__meta)?;
25    m.function_meta(Iter::len__meta)?;
26    m.function_meta(Iter::nth__meta)?;
27    m.function_meta(Iter::next_back__meta)?;
28    m.implement_trait::<Iter>(rune::item!(::std::iter::Iterator))?;
29    m.implement_trait::<Iter>(rune::item!(::std::iter::DoubleEndedIterator))?;
30
31    Ok(m)
32}