#string #generic #no-alloc #no-std #convert-string

no-std stringz

在泛型参数中使用字符串的方法

11个不稳定版本 (3个破坏性更新)

0.4.1 2024年5月27日
0.4.0 2024年5月27日
0.3.5-alpha2024年5月27日
0.2.0 2024年4月26日
0.1.2 2024年4月24日

#2362 in 数据结构

Download history 446/week @ 2024-04-22 151/week @ 2024-04-29 8/week @ 2024-05-06 607/week @ 2024-05-20 396/week @ 2024-05-27 11/week @ 2024-06-03 5/week @ 2024-06-10 8/week @ 2024-07-01 92/week @ 2024-07-29

每月92次下载
用于 structz

MIT/Apache

7KB
60 代码行

stringz

将字符串转换为类型,使其可用作泛型参数。

安装

cargo add stringz

对于 no_std 用户

cargo add stringz --no-default-features 

示例

use stringz::{TypedString, string};

fn test_hello<T: TypedString>() {
    assert_eq!(T::value(), "hello");
}

test_hello::<string!("hello")>();

说明

string 宏将 "hello" 转换为以下元组类型

(Character<'h'>, Character<'e'>, Character<'l'>, Character<'l'>, Character<'o'>)

注意:上述形式仅为了便于理解,实际使用的 tuplezTuple 类型。

所有生成的类型都是零大小类型

use stringz::string;
assert_eq!(std::mem::size_of::<string!("no matter how long it is")>(), 0);

lib.rs:

将字符串转换为类型,使其可用作泛型参数。

安装

cargo add stringz

对于 no_std 用户

cargo add stringz --no-default-features

示例

use stringz::{TypedString, string};

fn test_hello<T: TypedString>() {
    assert_eq!(T::value(), "hello");
}

test_hello::<string!("hello")>();

说明

string 宏将 "hello" 转换为以下元组类型

(Character<'h'>, Character<'e'>, Character<'l'>, Character<'l'>, Character<'o'>)

注意:上述形式仅为了便于理解,实际使用的 Tuple 类型。

所有生成的类型都是零大小类型

use stringz::string;
assert_eq!(std::mem::size_of::<string!("no matter how long it is")>(), 0);

依赖项

~0.6–1MB
~21K SLoC