يتم إعطاؤك مقتطف الكود التالي:

''''الصدأ
للعنوان في Device.addr.iter() {
    إذا self.contains_addr(*addr) {
        return Err(Error::ClientAddressDuplicate(*addr));
    }
}

self.inner.push(device);
نعم(())
}

تضمين TryFrom<&str> لـ AdaptorConfig {
    اكتب خطأ = خطأ؛

    fn Try_from(list: &str) -> النتيجة<Self> {
```

مهمتك هي إكمال تنفيذ وظيفة `try_from` لبنية `AdapterConfig`، والتأكد من أن مقتطف التعليمات البرمجية يعمل على النحو المنشود.

تأخذ الدالة "try_from" سلسلة "قائمة" كمدخل وتحاول إنشاء كائن "AdapterConfig" منها. تحتوي بنية "AdapterConfig" على التعريف التالي:

''''الصدأ
تكوين محول البنية {
    العنوان: Vec<i32>،
    الداخلية: Vec<الجهاز>،
}
```

تحتوي سلسلة "القائمة" على قائمة مفصولة بفواصل من الأعداد الصحيحة التي تمثل العناوين، متبوعة بقائمة مفصولة بفواصل منقوطة لتكوينات الجهاز.

مهمتك هي تحليل سلسلة "القائمة"، واستخراج العناوين وتكوينات الجهاز، وإنشاء كائن "AdapterConfig" جديد بهذه القيم.

يمثل الحقل "addr" في بنية "AdapterConfig" متجهًا للعناوين. بالنسبة لكل عنوان في "القائمة"، تحتاج إلى التحقق مما إذا كان موجودًا بالفعل في ناقل "addr". إذا كان الأمر كذلك، فيجب أن تُرجع خطأ `Error::ClientAddressDuplicate(address)`، حيث يكون `address` هو العنوان المكرر. إذا لم يتم العثور على أي تكرارات، فيجب عليك إضافة العنوان إلى المتجه `addr`.

يمثل الحقل "الداخلي" لبنية "AdapterConfig" متجهًا لتكوينات الجهاز. لكل تكوين جهاز في "القائمة"، يجب عليك إنشاء كائن "جهاز" وإضافته إلى المتجه "الداخلي".

بعد معالجة "القائمة" بأكملها، يجب عليك إرجاع نتيجة "Ok(())" إذا لم تحدث أي أخطاء أثناء التحقق من صحة العنوان، والتحقق من التكرارات، وإنشاء كائنات "الجهاز".

يتعين عليك تنفيذ الأجزاء المفقودة من مقتطف الشفرة لتحقيق هذه الوظيفة.

---
**مدخل:**

سيتألف الإدخال من سلسلة واحدة `list` (1 ≥ |list| ≥ 10^6)، حيث يتم فصل كل عنوان وتكوين جهاز إما عن طريق `' أو'` أو `';'`.

ستكون قيم تكوين العنوان والجهاز أعدادًا صحيحة غير سالبة.

---
**انتاج:**

إذا تم تنفيذ الدالة `try_from` بشكل صحيح ولم تكن هناك أخطاء أثناء التحقق من صحة العنوان أو التحقق من التكرارات، فيجب أن تُرجع `Ok(())`.

إذا كان هناك عنوان مكرر في المتجه `addr`، فيجب أن تُرجع الدالة `Err(Error::ClientAddressDuplicate(address))`، حيث يكون `address` هو العنوان المكرر.

---
**مثال:**

مدخل:
''''الصدأ
Let list = "5,10,15;الجهاز 1,الجهاز 2,الجهاز 3";
```

انتاج:
''''الصدأ
نعم(())
```

مدخل:
''''الصدأ
Let list = "10,15,5;جهاز 4,جهاز 2,جهاز 3";
```

انتاج:
''''الصدأ
خطأ(خطأ::ClientAddressDuplicate(5))
```
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}