3个不稳定版本

0.2.1 2024年3月8日
0.2.0 2023年7月10日
0.1.0 2023年7月10日

#526算法

Download history 16/week @ 2024-03-11 102/week @ 2024-03-25 35/week @ 2024-04-01 140/week @ 2024-06-10

每月140 次下载
tree-experiments 中使用

MIT 许可证

16KB
136 代码行

swap3

提供同时通过旋转(左转(abcbca)或右转(abccab))交换三个值的实用函数。这些函数在例如旋转二叉树的列表表示中的元素时很有用。

提供的函数适用于任意类型,并且不要求类型必须是 CloneCopyDefault

示例

对于单个引用,有 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_sliceswap3_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

提供同时通过旋转(左转(abcbca)或右转(abccab))交换三个值的实用函数。这些函数在例如旋转二叉树的列表表示中的元素时很有用。

提供的函数适用于任意类型,并且不要求类型必须是 CloneCopyDefault

包功能

  • 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_sliceswap3_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]);

无运行时依赖