#![cfg(feature = "traverse-trivial")]
use core::ops::ControlFlow;
use traversable::Traversable;
use traversable::TraversableMut;
use traversable::function::visitor_enter;
use traversable::function::visitor_leave_mut;
#[test]
fn test_visitor() {
let mut visitor = visitor_enter::<i32, (), _>(|item| {
assert_eq!(*item, 42);
ControlFlow::Continue(())
});
let result = 42i32.traverse(&mut visitor);
assert!(result.is_continue());
}
#[test]
fn test_visitor_mut() {
let mut visitor = visitor_leave_mut::<i32, (), _>(|item| {
*item += 1;
ControlFlow::Continue(())
});
let mut data = 42i32;
let result = data.traverse_mut(&mut visitor);
assert!(result.is_continue());
assert_eq!(data, 43);
}