pub fn switch<S: Clone + From<T>, T: Clone + From<S>>( dir: &mut Direction<S, T> ) -> Direction<S, T>