2 个不稳定版本

使用旧的 Rust 2015

0.2.1 2018年2月27日
0.1.1 2016年2月5日
0.1.0 2016年2月4日

#1985 in Rust 模式

Download history • Rust 包仓库 5269/week @ 2024-03-24 • Rust 包仓库 7720/week @ 2024-03-31 • Rust 包仓库 6913/week @ 2024-04-07 • Rust 包仓库 7626/week @ 2024-04-14 • Rust 包仓库 8873/week @ 2024-04-21 • Rust 包仓库 5761/week @ 2024-04-28 • Rust 包仓库 10435/week @ 2024-05-05 • Rust 包仓库 12711/week @ 2024-05-12 • Rust 包仓库 9074/week @ 2024-05-19 • Rust 包仓库 11355/week @ 2024-05-26 • Rust 包仓库 14088/week @ 2024-06-02 • Rust 包仓库 9194/week @ 2024-06-09 • Rust 包仓库 9689/week @ 2024-06-16 • Rust 包仓库 10525/week @ 2024-06-23 • Rust 包仓库 10503/week @ 2024-06-30 • Rust 包仓库 15517/week @ 2024-07-07 • Rust 包仓库

46,533 每月下载量
用于 18 个crate (2 个直接使用)

Apache-2.0/MIT

17KB
199

SplitMut

一个 Rust 库,用于安全地从同一集合中检索多个可变值。

API 文档 Crates.io

get2_mutget3_mutget4_mut 返回一个元组或 2,3 或 4 个值,每个值都是以下之一

  • Ok(&mutV)
  • Err(SplitMutError::NoValue) 如果没有值(即,当你的常规 get_mut 会返回 None 时)
  • Err(SplitMutError::SameValue) 如果元组中已经返回了相同的值。

use splitmut::SplitMut 添加到您的代码中,以便为可变切片、Vec、VecDeque、HashMap 和 BTreeMap 实现这些函数。

示例

extern crate splitmut;

use std::collections::HashMap;
use splitmut::{SplitMut, SplitMutError};

// Create a hashmap
let mut h = HashMap::new();
h.insert(1, "Hello");
h.insert(2, "world");

// Swap two values easily
{
    let (m1, m2) = h.get2_mut(&1, &2);
    std::mem::swap(m1.unwrap(), m2.unwrap());
}
assert_eq!(h.get(&1), Some(&"world"));
assert_eq!(h.get(&2), Some(&"Hello"));

// Show error handling
let (m0, m1a, m1b) = h.get3_mut(&0, &1, &1);
// No value for the key "0"
assert_eq!(m0, Err(SplitMutError::NoValue));
// First value for the key "1" is returned successfully
assert_eq!(m1a, Ok(&mut "world"));
// Second value for the key "1" returns an error
assert_eq!(m1b, Err(SplitMutError::SameValue));

无运行时依赖