我想创建一个Rc<str>因为我想减少间接跟随访问Rc<String>需求的2个指针.我需要使用一个,Rc因为我真的拥有共享权.我详细介绍了我在字符串类型中遇到的更具体问题.
Rc 有一个?Sized约束:
pub struct Rc<T: ?Sized> { /* fields omitted */ }
Run Code Online (Sandbox Code Playgroud)
我还听说Rust 1.2将提供适当的支持来存储未经过类型化的类型Rc,但我不确定它与1.1的区别.
以str案例为例,我的天真尝试(也就是从a构建String)也失败了:
use std::rc::Rc;
fn main() {
let a: &str = "test";
let b: Rc<str> = Rc::new(*a);
println!("{}", b);
}
Run Code Online (Sandbox Code Playgroud)
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
--> src/main.rs:5:22
|
5 | let b: Rc<str> = Rc::new(*a);
| ^^^^^^^ `str` does not have …Run Code Online (Sandbox Code Playgroud) rust ×1