// Copyright (C) 2026 Industrial Algebra
// SPDX-License-Identifier: Apache-2.0
use Vec;
use crateChoice;
use crateStrong;
/// A `Traversing` profunctor can lift a `P<A, B>` to operate over multiple foci.
///
/// This is the key ingredient for profunctor-encoded traversals.
///
/// `wander` takes both a `get_all` (for read-only profunctors like `ForgetF`)
/// and a `modify_all` (for read-write profunctors like `FnP`), since Rust
/// lacks rank-2 types that would allow a single polymorphic traversal function.