#struct #nested #conversion #str #string

append_to_string

append_to_string!() 宏。将结构体内部或单独出现的文本字面量通过 .to_string() 添加。

1 个不稳定版本

0.1.0 2022 年 11 月 2 日

#80#nested

MIT 许可证

7KB

append_to_string rust 宏

Rust CI badge

append_to_string!() 宏将结构体内部或单独出现的文本字面量通过 .to_string() 添加,将其转换为字符串。字面量的类型必须实现 .to_string() 方法。

  • 转换字面量
// str example
let a = "value".to_string();
let b = append_to_string!("value");
assert_eq!(a, b);

// int example
let a = 42.to_string();
let b = append_to_string!(42);
assert_eq!(a, b);

  • 转换结构体

// structs
struct A {
    s1: String,
    s2: String,
}

struct B {
    s1: String,
    s2: String,
    a: A,
}

// simple struct example
let a1 = append_to_string!( 
    A {
        s1: "hello",
        s2: "world", 
    }
);

let a2 = A {
    s1: "hello".to_string(),
    s2: "world".to_string(), 
};

assert_eq!(a1, a2);

// nested struct example
let b1 = append_to_string!( 
    B {
        s1: "hello",
        s2: "world",
        a: A {
            s1: "nested",
            s2: "struct",
        }
    }
);

let b2 = B {
    s1: "hello".to_string(),
    s2: "world".to_string(),
    a: A {
        s1: "nested".to_string(),
        s2: "struct".to_string(),
    }
};

assert_eq!(b1, b2);

当你需要创建具有 String 字段的大型结构体,但希望保持代码可读性或节省时间,而不为 &str 类型编写转换方法时,这可能很有用。

依赖项

此crate使用syn、quote和proc_macro2 crate。

依赖项

~1.5MB
~35K SLoC