#counter #id #identifier #count

simple-counter

用于生成线程局部静态计数的宏。适用于基本的 ID 生成。

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018年7月17日

#1676Rust 模式

Download history • Rust 包仓库 150/week @ 2024-03-11 • Rust 包仓库 122/week @ 2024-03-18 • Rust 包仓库 187/week @ 2024-03-25 • Rust 包仓库 223/week @ 2024-04-01 • Rust 包仓库 73/week @ 2024-04-08 • Rust 包仓库 85/week @ 2024-04-15 • Rust 包仓库 121/week @ 2024-04-22 • Rust 包仓库 106/week @ 2024-04-29 • Rust 包仓库 75/week @ 2024-05-06 • Rust 包仓库 116/week @ 2024-05-13 • Rust 包仓库 121/week @ 2024-05-20 • Rust 包仓库 106/week @ 2024-05-27 • Rust 包仓库 106/week @ 2024-06-03 • Rust 包仓库 133/week @ 2024-06-10 • Rust 包仓库 91/week @ 2024-06-17 • Rust 包仓库 115/week @ 2024-06-24 • Rust 包仓库

458 每月下载量
用于 6 个crate(直接使用2个)

MIT 许可证

5KB
53

simple-counter

通过创建一个新的模块并使用线程局部静态 Cell,提供了一个生成线程局部全局计数的宏。目前主要用于整数类型。适用于基本的 ID 生成。

用法

将以下依赖项添加到您的 Cargo.toml 文件中

[dependencies]
simple-counter = "0.1.0"

并在导入时使用 #[macro_use] 注解

#[macro_use]
extern crate simple_counter;

generate_counter!(Counter, usize);

fn main() {

  // Starts at 0 by default
  assert_eq!(Counter::next(), 0);
  assert_eq!(Counter::next(), 1);
  assert_eq!(Counter::next(), 2);

  // Can be set to arbitrary value
  Counter::set(1000);
  assert_eq!(Counter::next(), 1000);
  assert_eq!(Counter::next(), 1001);
  assert_eq!(Counter::next(), 1002);

  // Or reset to 0
  Counter::reset();
  assert_eq!(Counter::next(), 0);
}

示例

这是一个用于编译器的简单唯一临时生成器

#[macro_use]
extern crate simple_counter;

generate_counter!(TempID, usize);

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct Temp {
    id: usize,
    name: String,
}

impl Temp {
    pub fn from_str(name: &'static str) -> Self {
        Temp {
            id: TempID::next(),
            name: name.to_string(),
        }
    }
}

无运行时依赖