לדלג לתוכן

1.3 - ייצוג נתונים במבנים בטיפוסי סכום ובפרוסות - תרגול

תרגול כותרת בעלת מצבים מפורשים

כתבו enum בשם ParseResult עם שלושה מצבים: הודעה חוקית שמחזיקה kind: u8 ו־length: u16, קלט קצר שמחזיק את מספר הבייטים החסרים, וגרסה לא נתמכת שמחזיקה את בייט הגרסה.

הפורמט כולל ארבעה בייטים: גרסה, סוג ושני בייטים של אורך ב־little endian. הגרסה היחידה הנתמכת היא 1. כתבו פונקציה שמקבלת &[u8], מחזירה את המצב המתאים ואינה משתמשת באינדקס שאינו מובטח. אם הקלט קצר, בדקו את האורך לפני בדיקת הגרסה.

בדקו קלט ריק, קלט באורך שלושה בייטים, גרסה לא נתמכת והודעה חוקית. הסבירו מדוע איננו מעתיקים ארבעה בייטים ישירות לתוך enum בזיכרון.