use crate::expression::Expression;
use crate::traits::IntoExpression;
mod adapters;
#[allow(clippy::module_inception)]
mod expr;
mod into_expr;
mod sources;
pub use adapters::{cloned, copied, enumerate, map, zip, Cloned, Copied, Enumerate, Map, Zip};
pub use expr::{Expr, ExprMut};
pub use into_expr::IntoExpr;
pub use sources::{fill, fill_with, from_elem, from_fn, Fill, FillWith, FromElem, FromFn};
pub use sources::{AxisExpr, AxisExprMut, Lanes, LanesMut};
pub fn fold<T, I: IntoExpression, F: FnMut(T, I::Item) -> T>(expr: I, init: T, f: F) -> T {
expr.into_expr().fold(init, f)
}
pub fn for_each<I: IntoExpression, F: FnMut(I::Item)>(expr: I, f: F) {
expr.into_expr().for_each(f)
}