Crates.io | swap3 |
lib.rs | swap3 |
version | 0.2.1 |
source | src |
created_at | 2023-07-10 21:14:10.856918 |
updated_at | 2024-03-08 11:25:02.944646 |
description | Swapping of three references, rotating the values left or right |
homepage | |
repository | https://github.com/sunsided/swap3-rs |
max_upload_size | |
id | 913312 |
size | 19,734 |
Provides utility functions for simultaneously swapping three values by rotating them
either left (abc
→ bca
) or right (abc
→ cab
). These functions can come in handy e.g.
when rotating elements of a binary tree in list representation.
The provided functions work on arbitrary types and do not require the type to be Clone
, Copy
or Default
.
For individual references, the swap3_bca
(rotate left) and swap3_cab
(rotate right)
functions are available:
fn swap3_bca() {
let mut a = 10;
let mut b = 20;
let mut c = 30;
swap3::swap3_bca(&mut a, &mut b, &mut c);
assert_eq!([a, b, c], [20, 30, 10]);
}
For slices, the swap3_bca_slice
and swap3_cab_slice
functions can be used:
use swap3::prelude::*;
fn swap3_bca() {
let mut vec = vec![10, 20, 30, 40, 50, 60];
vec.swap3_bca(0, 1, 4); // or swap3_bca_slice(&mut vec, 0, 1, 4)
assert_eq!(vec, &[20, 50, 30, 40, 10, 60]);
}