स्ट्रिंग सदस्यों के साथ संरचना कैसे बनाएं? सदस्यों को संरचना वस्तु के स्वामित्व में होना चाहिए। मैं जंग के लिए नया हूं, सरल प्रश्न के लिए खेद है, लेकिन मुझे एक उदाहरण नहीं मिला। "~" का उपयोग करके कुछ पुराना उदाहरण था जिसे लगता है कि हटा दिया गया है ... मैं संरचना की सही घोषणा और फिर तत्काल उदाहरण की तलाश में हूं।जंग: स्ट्रिंग सदस्यों के साथ संरचना कैसे बनाएं?
उत्तर
यदि स्ट्रिंग को संरचना के स्वामित्व में होना है, तो आपको String
का उपयोग करना चाहिए। वैकल्पिक रूप से, आप एक स्थिर जीवनकाल (यानी, कार्यक्रम का जीवनकाल) के साथ &str
का उपयोग कर सकते हैं। उदाहरण के लिए:
struct Foo {
bar: String,
baz: &'static str,
}
fn main() {
let foo = Foo {
bar: "bar".to_string(),
baz: "baz",
};
println!("{}, {}", foo.bar, foo.baz);
}
स्ट्रिंग के जीवनकाल अज्ञात है, तो आप Foo
एक जीवन भर के साथ parameterize कर सकते हैं:
struct Foo<'a> {
baz: &'a str,
}
और अगर आप सुनिश्चित नहीं हैं कि क्या स्ट्रिंग या स्वामित्व नहीं की जाएगी (आवंटन से बचने के लिए उपयोगी), तो आप borrow::Cow
उपयोग कर सकते हैं:
use std::borrow::Cow;
struct Foo<'a> {
baz: Cow<'a, str>,
}
fn main() {
let foo1 = Foo { baz: Cow::Borrowed("baz") };
let foo2 = Foo { baz: Cow::Owned("baz".to_string()) };
println!("{}, {}", foo1.baz, foo2.baz);
}
ध्यान दें कि Cow
प्रकार पैरामिट्रीकृत ov है जीवन भर में जीवनकाल के जीवनकाल को संदर्भित करता है स्ट्रिंग उधार (यानी, जब यह Borrowed
है)। यदि आपके पास Cow
है, तो आप borrow
का उपयोग कर सकते हैं और &'a str
प्राप्त कर सकते हैं, जिसके साथ आप एक नई स्ट्रिंग आवंटित करने के बारे में चिंता किए बिना सामान्य स्ट्रिंग ऑपरेशन कर सकते हैं या नहीं। (आमतौर पर, borrow
की स्पष्ट बुला deref की वजह से की आवश्यकता नहीं है। अर्थात्, Cow
मूल्यों उनके उधार फार्म के लिए स्वचालित रूप से deref होगा। तो &*val
val
टाइप Cow<'a, str>
एक &str
का उत्पादन करेगा है जहां।)
~
वाक्य रचना वास्तव में अब मान्य नहीं है । ~str
के लिए प्रतिस्थापन String
है, जिसे आप स्ट्रिंग बफर के रूप में सोच सकते हैं (यानी, स्ट्रिंग की सामग्री संशोधित है और यह बढ़ने योग्य है)। एक &str
एक स्ट्रिंग के अपरिवर्तनीय दृश्य है जिसे सुरक्षित कोड में बदला नहीं जा सकता है।
उहह, पूर्ण उत्तर के लिए धन्यवाद। मुझे जीवन भर parametrization के बारे में सोचने की जरूरत है :) – vladimir
- 1. स्ट्रिंग के साथ संरचना भरें []?
- 2. स्थिर सदस्यों के साथ .NET इंटरफ़ेस कैसे बनाएं?
- 3. अप्रयुक्त सदस्यों को संरचना में कैसे जांचें?
- 4. एलएलवीएम संरचना मूल्य कैसे बनाएं?
- 5. संरचना/कक्षा के सदस्यों का स्पष्ट प्रारंभ
- 6. कैरिज रिटर्न के साथ स्ट्रिंग कैसे बनाएं?
- 7. संरचना सदस्यों पर टेम्पलेट फ़ंक्शन
- 8. जंग में एक सरणी युक्त संरचना को कैसे प्रारंभ करें?
- 9. कैसे जंग
- 10. जेएनए में संरचना कैसे बनाएं?
- 11. सी संरचना में स्ट्रिंग फ़ील्ड के साथ कैसे काम करें?
- 12. निरंतर सदस्यों के साथ गंतव्य संरचना के साथ memcpy का उपयोग करना कानूनी है?
- 13. जंग के साथ पोर्टेबल बाइनरी
- 14. सी ++ वर्ग/संरचना सदस्यों की डिफ़ॉल्ट दृश्यता
- 15. जंग में संरचना फ़ील्ड नाम कैसे प्राप्त करें?
- 16. नंबर की एक स्ट्रिंग/जंग
- 17. सी ++ 11 गैर-तुच्छ सदस्यों के साथ 11 अज्ञात संघ
- 18. जंग के
- 19. नया सिस्टम कैसे बनाएं। अन्य नाम के साथ स्ट्रिंग प्रकार?
- 20. जंग के ToLowercase
- 21. जंग परियोजना के लिए अनुशंसित निर्देशिका संरचना क्या है?
- 22. संरचना-स्वामित्व वाले कार्यों के लिए जंग स्कॉइंग नियम
- 23. जंग
- 24. नोटिफिकेशन टेबल संरचना जैसे फेसबुक कैसे बनाएं?
- 25. जंग
- 26. जंग
- 27. स्थैतिक सदस्यों के साथ स्टेटिक स्ट्रक्चर
- 28. कॉन्स सदस्यों के साथ structs के वेक्टर?
- 29. एक संरचना "रेंज-सक्षम" बनाएं?
- 30. जंग
'स्ट्रिंग' का प्रयोग करें और ध्यान रखें कि '.to_string()' के माध्यम से 'और str' से' स्ट्रिंग' बनाना 'एक ढेर आवंटन + संपूर्ण स्ट्रिंग को कॉपी करना शामिल है। – sellibitze