मुझे जंग में 16 बाइट सीमा के लिए एक संरचना को संरेखित करने की आवश्यकता है। repr
attribute को संरेखण के बारे में संकेत देना संभव लगता है, लेकिन यह इस सटीक उपयोग के मामले का समर्थन नहीं करता है।मैं निर्दिष्ट बाइट सीमा पर एक संरचना को कैसे संरेखित कर सकता हूं?
मैं क्या हासिल करने की कोशिश कर रहा हूँ का एक कार्यात्मक परीक्षण एक प्रकार Foo
ऐसी है कि
assert_eq!(mem::align_of::<Foo>(), 16);
या वैकल्पिक रूप से, एक क्षेत्र के साथ एक struct Bar
baz
ऐसी है कि
println!("{:p}", Bar::new().baz);
हमेशा एक प्रिंट है 16 से विभाजित संख्या
क्या यह वर्तमान में जंग में संभव है? क्या कोई काम-आसपास है?
क्या आपका मतलब है कि आप एक विशिष्ट संरेखण के साथ ढेर में एक संरचना चाहते हैं? मुझे स्टैक-आवंटित प्रकारों के लिए संरेखण के बारे में पता नहीं है, लेकिन अस्थिर ['आवंटित '] (http://doc.rust-lang.org/std/rt/heap/fn.allocate.html) में संरेखण है तर्क। – Shepmaster
इसके अलावा, आप पैकिंग का उल्लेख संरेखण घटाने के रूप में करते हैं; क्या आप कहने का मतलब है कि आपको हमेशा एक विशिष्ट संरेखण पर एक संरचना का * सदस्य * होना चाहिए? आप अपने प्रश्न को कुछ उदाहरण कोड, एएससीआईआईआई-आर्ट मेमोरी आरेखों, या अधिक गद्य का वर्णन कर सकते हैं कि आपको ऐसा करने की आवश्यकता क्यों है ताकि मैं जितना अधिक बुद्धिमान व्यक्ति आपकी मदद कर सकूं।^_^ – Shepmaster
प्रतिक्रिया के लिए धन्यवाद, @ शेमपस्टर! मेरा मतलब सामान्य रूप से गठबंधन था, लेकिन हाँ, मेरा विशिष्ट उपयोग केस ढेर के लिए है। मैं अपने प्रश्न को स्पष्ट होने के लिए अपडेट करूंगा। –