在Rust 1.36中,以下代码可以编译通过:
但是这个代码失败了,错误信息为:
let arr = [0 as u8; 30];
let buf: Box<[u8]> = Box::new(arr);
但是这个代码失败了,错误信息为:
期望切片,但发现了一个30个元素的数组
,指的是下面标记的代码:let arr = [0 as u8; 30];
let buf: RefCell<[u8]> = RefCell::new(arr);
^^^^^^^^^^^^^^^^^
谁能解释一下这种行为的不同之处?RefCell
和Box
都将T约束为<T: ?Sized>
。