לדלג לתוכן

1 - פרויקט מסכם - פרויקט

פרויקט סיכום קורא הגדרות עם בעלות ברורה

נבנה כלי בשם settings_check שקורא קובץ טקסט קטן ומציג הגדרות שנמצאו בו. הפרויקט מחבר את תחביר השפה, ההשאלות, האוספים והטיפול בשגיאות שנלמדו בפרק. אין צורך להשתמש ב־unsafe או בתלות חיצונית.

הפורמט הוא שורה אחת לכל הגדרה, במבנה name=value. שורה ריקה ושורה שמתחילה ב־# לאחר הסרת רווחים הן הערה. השם והערך עוברים trim ואסור שיהיו ריקים. שם שמופיע פעמיים הוא שגיאה, גם אם הערך זהה. יש לשמור את מספר השורה שבה התגלתה הבעיה.

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

בתוכנית הפקודה קראו נתיב יחיד, טענו את הקובץ ל־String ושמרו אותה חיה לאורך השימוש במפה. במקרה של כשל קובץ או פענוח הציגו הודעה ל־stderr וקוד יציאה שאינו אפס. במקרה הצלחה הדפיסו כל זוג פעם אחת.

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

הגישו גם דוגמה שאמורה להידחות בקומפילציה, ובה הקלט מושמד לפני השימוש במפה. שמרו אותה בקובץ נפרד שאינו יעד הבנייה הרגיל. הסבירו כיצד הייתם משנים את ה־API אם הדרישה הייתה להחזיר מפה שיכולה לחיות באופן עצמאי.

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