How to create a Rust struct with string members?
我希望成员归该结构所有。很抱歉这个简单的问题,但是我找不到一个例子。我正在寻找结构和实例化示例的正确声明。
如果字符串必须由该结构拥有,则应使用
1 2 3 4 5 6 7 8 9 10 11 12 | struct Foo { bar: String, baz: &'static str, } fn main() { let foo = Foo { bar:"bar".to_string(), baz:"baz", }; println!("{}, {}", foo.bar, foo.baz); } |
如果字符串的生存期未知,则可以使用生存期来参数化
1 2 3 | struct Foo<'a> { baz: &'a str, } |
另请参见:
- Rusts`String`和`str`有什么区别?
如果不确定是否将拥有该字符串(用于避免分配),则可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | use std::borrow::Cow; struct Foo<'a> { baz: Cow<'a, str>, } fn main() { let foo1 = Foo { baz: Cow::Borrowed("baz"), }; let foo2 = Foo { baz: Cow::Owned("baz".to_string()), }; println!("{}, {}", foo1.baz, foo2.baz); } |
请注意,