3个不稳定版本
0.2.1 | 2024年3月8日 |
---|---|
0.2.0 | 2023年7月10日 |
0.1.0 | 2023年7月10日 |
#526 在 算法
每月140 次下载
在 tree-experiments 中使用
16KB
136 代码行
swap3
提供同时通过旋转(左转(abc
→ bca
)或右转(abc
→ cab
))交换三个值的实用函数。这些函数在例如旋转二叉树的列表表示中的元素时很有用。
提供的函数适用于任意类型,并且不要求类型必须是 Clone
、Copy
或 Default
。
示例
对于单个引用,有 swap3_bca
(左转)和 swap3_cab
(右转)函数可用
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]);
}
对于切片,可以使用 swap3_bca_slice
和 swap3_cab_slice
函数
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]);
}
lib.rs
:
swap3
提供同时通过旋转(左转(abc
→ bca
)或右转(abc
→ cab
))交换三个值的实用函数。这些函数在例如旋转二叉树的列表表示中的元素时很有用。
提供的函数适用于任意类型,并且不要求类型必须是 Clone
、Copy
或 Default
。
包功能
unsafe
-unsafe
功能启用使用(可能更快)的不可安全代码。默认情况下是禁用的;禁用时,隐含forbid(unsafe_code)
。
示例
对于单个引用,有 swap3_bca
(左转)和 swap3_cab
(右转)函数可用
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]);
对于切片,可以使用 swap3_bca_slice
和 swap3_cab_slice
函数
let mut vec = vec![10, 20, 30, 40, 50, 60];
swap3::swap3_bca_slice(&mut vec, 0, 1, 4);
assert_eq!(vec, &[20, 50, 30, 40, 10, 60]);
... 或者使用从预导入中导入的 Swap3
特性
use swap3::prelude::*;
let mut vec = vec![10, 20, 30, 40, 50, 60];
vec.swap3_bca(0, 1, 4);
assert_eq!(vec, &[20, 50, 30, 40, 10, 60]);