2016-06-27 13 views
19

Rust documentationbool के आकार पर अस्पष्ट है।
क्या यह 1 बाइट होने की गारंटी है, या यह C++ में निर्दिष्ट नहीं है?क्या बूल 1 बाइट होने की गारंटी है?

fn main() { 
    use std::mem; 
    println!("{}",mem::size_of::<bool>()); //always 1? 
} 
+1

यह http://stackoverflow.com/q/36924530/5189607 – malbarbo

उत्तर

18

जंग bool के लिए LLVM को i1 का उत्सर्जन करता है और पर जो कुछ भी यह पैदा करता है निर्भर करता है। एलएलवीएम अब i8 (एक बाइट) का उपयोग i1 को रस्ट द्वारा समर्थित सभी प्लेटफ़ॉर्म के लिए स्मृति में करने के लिए करता है। दूसरी तरफ, भविष्य के बारे में कोई निश्चितता नहीं है, क्योंकि जंग डेवलपर्स अब तक विशेष bool प्रतिनिधित्व करने के लिए प्रतिबद्ध नहीं हैं।

तो, वर्तमान कार्यान्वयन की गारंटी है लेकिन किसी भी विनिर्देशों द्वारा इसकी गारंटी नहीं है।

आप this RFC discussion और लिंक किए गए पीआर और मुद्दे में अधिक जानकारी प्राप्त कर सकते हैं।

+0

से संबंधित है विशेष रूप से [यह टिप्पणी] (https://github.com/rust-lang/rfcs/pull/954#issuecomment-83811006) जो स्पष्ट रूप से कहता है कि वे प्रतिनिधित्व को टालना नहीं चाहते हैं। –

संबंधित मुद्दे