Rust创建Owned String有无简写方法?无需反复调用to_string
可用的简写方案如下:
1. 用into()替代to_string()
String原生实现了From<&str>特征,字符串字面量(类型为&str)调用into()方法可直接转换为拥有所有权的String,写法更短:
Parameter { name: "name".into(), value: "value".into() }
2. 自定义结构体构造函数
给Parameter实现通用构造方法,入参自动完成类型转换,调用时不需要手动处理字符串转换逻辑:
impl Parameter { // 入参支持所有可转换为String的类型,包括字符串字面量 pub fn new(name: impl Into<String>, value: impl Into<String>) -> Self { Self { name: name.into(), value: value.into() } } } // 调用示例 let param = Parameter::new("name", "value");
3. 批量创建场景可用宏简化
如果测试场景需要频繁创建大量该结构体实例,可以定义声明宏自动完成转换逻辑:
macro_rules! param { ($name:literal, $value:literal) => { Parameter { name: $name.into(), value: $value.into() } }; } // 调用示例 let param = param!("name", "value");
如果结构体字段较多,还可以扩展宏支持指定字段名的写法,适配更灵活的创建需求。
内容的提问来源于stack exchange,提问作者richzilla
相关产品推荐
相关产品推荐

