#string #shorthand #easy #simple

no-std static-or-heap-string

一个枚举类型,用于处理静态和堆分配的字符串

1 个不稳定版本

0.1.0 2024年7月17日

8#strings

MIT 许可证

12KB
178

static-or-heap-string

static-or-heap-string 是一个 Rust 包,它提供了一个枚举类型 &'static str 或堆分配的 String。这允许在可能遇到静态或动态字符串数据的情况下进行灵活和高效的字符串处理。

功能

  • 支持与 Serde 一起进行序列化和反序列化。
  • 实现比较特质(PartialEqPartialOrdOrd)。
  • 实现散列,忽略变体类型。
  • 提供统一的 API 以访问字符串数据。

用法

将此添加到您的 Cargo.toml

[dependencies]
static-or-heap-string = "0.1.0"
serde = { version = "1.0", features = ["derive"] }

在您的代码中导入并使用 StaticOrHeapString 枚举

use static_or_heap_string::StaticOrHeapString;
use serde_json;

fn main() {
    // Example usage
    let static_str = StaticOrHeapString::Static("hello");
    let heap_str = StaticOrHeapString::Heap(String::from("world"));

    println!("{:?}", static_str);
    println!("{:?}", heap_str);

    // Serialize and deserialize
    let serialized = serde_json::to_string(&static_str).unwrap();
    let deserialized: StaticOrHeapString = serde_json::from_str(&serialized).unwrap();
    assert_eq!(static_str, deserialized);
}

枚举变体

pub enum StaticOrHeapString {
    Static(&'static str),
    Heap(String),
}

Static(&'static str):表示静态字符串切片。 Heap(String):表示堆分配的字符串。

方法

as_str 返回枚举变体的字符串切片表示。

impl StaticOrHeapString {
    pub fn as_str(&self) -> &str {
        match self {
            StaticOrHeapString::Static(s) => s,
            StaticOrHeapString::Heap(s) => s.as_str(),
        }
    }
}

特质实现

PartialEqEq:比较字符串内容,忽略变体。 PartialOrdOrd:按字典顺序比较字符串内容。 Hash:散列字符串内容,忽略变体。 Debug:格式化字符串内容以进行调试。 Clone:克隆枚举,保留变体。 SerializeDeserialize:使用 Serde 序列化和反序列化字符串内容。

许可证

本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。

贡献

欢迎贡献!请打开一个问题或在 GitHub 上提交拉取请求。

依赖关系

~0.5–1MB
~24K SLoC