tuplities_reverse/lib.rs
1#![no_std]
2
3//! [tuplities](https://github.com/lucacappelletti94/tuplities) suite crate providing the `TupleReverse` trait.
4
5#[tuplities_derive::impl_reverse]
6/// A trait for reversing the elements of a tuple.
7///
8/// This trait provides a method to reverse the order of elements in a tuple.
9///
10/// # Examples
11///
12/// ```rust
13/// use tuplities_reverse::TupleReverse;
14///
15/// let tuple = (1, "hello", 3.14);
16/// let reversed = tuple.reverse();
17/// assert_eq!(reversed, (3.14, "hello", 1));
18/// ```
19///
20/// Part of the [`tuplities`](https://docs.rs/tuplities/latest/tuplities/) crate.
21pub trait TupleReverse {
22 /// The type of the tuple with elements in reverse order.
23 type Output;
24
25 /// Consumes the tuple and returns a new tuple with elements in reverse order.
26 fn reverse(self) -> Self::Output;
27}
28
29#[cfg(test)]
30mod tests {
31 use super::TupleReverse;
32
33 #[test]
34 fn test_reverse_empty_tuple() {
35 let tuple = ();
36 let _reversed: () = tuple.reverse();
37 }
38
39 #[test]
40 fn test_reverse_single_element() {
41 let tuple = (42,);
42 let reversed = tuple.reverse();
43 assert_eq!(reversed, (42,));
44 }
45
46 #[test]
47 fn test_reverse_two_elements() {
48 let tuple = (1, 2);
49 let reversed = tuple.reverse();
50 assert_eq!(reversed, (2, 1));
51 }
52
53 #[test]
54 fn test_reverse_three_elements() {
55 let tuple = (1, 2, 3);
56 let reversed = tuple.reverse();
57 assert_eq!(reversed, (3, 2, 1));
58 }
59}