Rust में trait object क्या है और इसे कैसे बनाएं?
सभी को नमस्ते! मैं हाल ही में Rust सीख रहा हूँ और traits को समझने की कोशिश कर रहा हूँ। मैंने documentation पढ़ी, लेकिन "trait object" की अवधारणा मेरे लिए अस्पष्ट बनी हुई है। \n\nमेरे पास एक सरल trait है:\n\n```rust\ntrait Animal {\n fn speak(&self);\n}\n\nstruct Dog;\nimpl Animal for Dog {\n fn speak(&self) {\n println!("Woof!");\n }\n}\n\nstruct Cat;\nimpl Animal for Cat {\n fn speak(&self) {\n println!("Meow!");\n }\n}\n```\n\nमैं एक vector बनाना चाहता हूँ जो विभिन्न जानवरों को store करे — Dog और Cat दोनों। लेकिन अगर मैं `Vec` लिखता हूँ, तो compiler error देता है कि Animal एक trait है, type नहीं। Internet पर `Box` का उपयोग करने की सलाह दी जाती है, लेकिन मैं समझ नहीं पा रहा हूँ कि यह `dyn` क्या है और इसके बिना क्यों नहीं चलता। \n\nकृपया समझाएं:\n1. सरल शब्दों में trait object क्या है?\n2. यह under the hood कैसे काम करता है?