【发布时间】:2020-12-06 16:00:49
【问题描述】:
well documented 可以将 [T; n] 强制转换为 [T]。下面的代码也是well-formed:
fn test(){
let _a: &[i32] = &[1, 2, 3];
}
在这里,&[T; n] 被强制转换为 &[T]。
对于所有类型T,U,如果T 被强制转换为U,那么&T 是否被强制转换为&U?
参考文献中没有记录(至少明确地)。
【问题讨论】:
-
@PeterHall 确实如此,而且文档齐全。问题是
&[T; n]到&[T]的规则是什么? -
这实际上记录在您链接的页面上 -
CoerceUnsized<&U> for &T是为T: Unsize<U>实现的,这意味着您的示例中存在强制。 -
在 Nomicon 中可能会稍微清晰一些:doc.rust-lang.org/nomicon/coercions.html
-
标签: rust language-lawyer type-coercion