Có ai thực hiện đặc điểm này cho Vec<>
không?
số
Và đáng ngạc nhiên, đây là một câu trả lời được trình diễn chính xác; điều này hiếm khi chứng minh sự vắng mặt của những thứ thường khó hoặc không thể. Vậy làm thế nào chúng ta có thể chắc chắn như vậy?
Rust có những quy định chặt chẽ rất nghiêm ngặt, các impl Trait for Struct
chỉ có thể được thực hiện:
- hoặc trong các thùng giống như
Trait
- hoặc trong thùng giống như
Struct
và nơi nào khác ; chúng ta hãy try it:
impl<T> std::fmt::Display for Vec<T> {
fn fmt(&self, _: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
Ok(())
}
}
sản lượng:
error[E0210]: type parameter `T` must be used as the type parameter for some
local type (e.g. `MyStruct<T>`); only traits defined in the
current crate can be implemented for a type parameter
--> src/main.rs:1:1
|
1 | impl<T> std::fmt::Display for Vec<T> {
|^
Bên cạnh đó, sử dụng một trait
, nó cần phải được trong phạm vi (và do đó, bạn cần phải được liên kết với thùng của nó), có nghĩa là:
- bạn được liên kết cả với thùng của
Display
và thùng của Vec
- không thực hiện
Display
cho Vec
và do đó dẫn chúng ta đến kết luận rằng không có ai thực hiện Display
cho Vec
.
Là một công trình xung quanh, như được chỉ ra bởi Manishearth, bạn có thể sử dụng Debug
đặc điểm, đó là invokable qua "{:?}"
như một specifier định dạng.
Nguồn
2015-05-19 08:29:24
Lỗi E0210 có nghĩa là nó chỉ được phép thực hiện đặc tính Hiển thị trong tập hợp tệp/vec.rs không? – highfly22
@ highfly22: sự hiểu biết của tôi là nó phải ở trong cùng một thùng, không nhất thiết phải cùng một tệp. –
Cái gì? Vì vậy, tôi không thể ad-hoc thêm một tính năng hiển thị impl trong mô-đun mà tôi cần nó cho một loại trong một thùng? – BitTickler