#string #variant #enums #storing #channel #macro #discord

common-strings

用于将常见字符串存储为枚举变体的宏

3 个版本

0.1.2 2022 年 7 月 20 日
0.1.1 2022 年 7 月 20 日
0.1.0 2022 年 7 月 20 日

#2384 in Rust 模式

MIT 许可证

8KB
141

用于将常见字符串存储为枚举变体的宏

此软件包提供了一个宏,用于将常见字符串存储为枚举变体。如果您存储了大量的字符串,其中一些值经常出现,这可以减少内存使用。

您可以通过启用 serde 功能来添加序列化和反序列化支持。

示例

一个例子是 Discord 频道名称。像 generalofftopicsupportstaff 等名称占所有频道名称的大多数。为每个名为 general 的频道存储字符串会浪费很多资源。

use common_strings::{common_strings, CommonStrings};

common_strings!(
    #[derive(Clone, Debug)]
    pub enum ChannelName {
        const General = "general";
        const Offtopic = "offtopic";
        const Support = "support";
        const Staff = "staff";
    }
);

fn main() {
    let channel_name = ChannelName::General;
    println!("{}", channel_name.as_ref()); // general

    let channel_name = ChannelName::Other(String::from("my-channel"));
    println!("{}", channel_name); // my-channel

    let channel_name = ChannelName::from_cow("offtopic".into());
    println!("{}", channel_name.into_string()); // offtopic
}

依赖项

~165KB