תרגול ממשק בינארי¶
כתבו ספריית סי עם מבנה Record הכולל uint8_t tag ואחריו uint64_t value. הוסיפו פונקציות שמחזירות את גודל המבנה ואת המיקום של value, ופונקציה סינכרונית שמקבלת מצביע למבנה ומחזירה את הסכום של השדות.
כתבו עטיפה בראסט שמשתמשת ב־repr(C) ובודקת את הפריסה לפני הקריאה. נסו להסיר את התכונה ובדקו את הפריסה בלבד, בלי לקרוא לפונקציה הזרה כאשר החוזה אינו מובטח. הסבירו מדוע הצלחת בדיקת גודל אחת אינה הופכת את ברירת המחדל של ראסט לחוזה ABI.
הוסיפו פונקציה זרה שמקבלת מחרוזת סי ומחזירה את אורכה. הדגימו קלט עם אפס פנימי, והחזירו שגיאה מהעטיפה לפני הקריאה לסי. ציינו מי מחזיק את המחרוזת ובאיזה רגע מותר לשחרר אותה.