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 नहीं। इंटरनेट पर `Box` उपयोग करने की सलाह दी जाती है, लेकिन मैं समझ नहीं पा रहा हूँ कि यह `dyn` क्या है और इसके बिना क्यों नहीं चल सकता। \n\nकृपया समझाएं:\n1. सरल शब्दों में trait object क्या है?\n2. यह under the hood कैसे काम करता है?