โดยทั่วไปฉันสามารถใช้คุณลักษณะเป็นพารามิเตอร์ประเภทสำหรับบางอย่างเช่น Box<>:

trait CtxVal {}
type CtxNodes = HashMap<String, Box<CtxVal>>;

แต่เมื่อคุณสมบัตินั้นมีพารามิเตอร์ประเภททั่วไปเช่นPartialEqฉันติดอยู่

type CtxNodes = HashMap<String, Box<PartialEq>>;

ฉันได้รับข้อผิดพลาด:

main.rs:6:37: 6:46 error: the type parameter `Rhs` must be explicitly specified in an 
      object type because its default value `Self` references the type `Self`                             
main.rs:6 type CtxNodes = HashMap<String, Box<PartialEq>>;                                                                                                                                
                                              ^~~~~~~~~ 

ถ้าฉันระบุประเภทสำหรับPartialEqสิ่งนั้นจะเป็นอะไร

Box<PartialEq<???>>
ตอบ

คุณต้องระบุสิ่งที่คุณต้องการให้วัตถุสามารถเปรียบเทียบได้เท่ากับ:

fn foo(value: Box<PartialEq<u8>>) -> bool {
    *value == 42
}

fn bar(value: Box<PartialEq<&str>>) -> bool {
    *value == "the answer"
}