আমি এর জন্য ডকুমেন্টেশনFile পড়ছি :
//..
let mut file = File::create("foo.txt")?;
//..
কি ?এই লাইনে? আমি এর আগে মরিচা বইতে দেখে মনে পড়ে না।
আমি এর জন্য ডকুমেন্টেশনFile পড়ছি :
//..
let mut file = File::create("foo.txt")?;
//..
কি ?এই লাইনে? আমি এর আগে মরিচা বইতে দেখে মনে পড়ে না।
উত্তর:
আপনি যেমন খেয়াল করেছেন, মরিচের ব্যতিক্রম নেই ex এতে আতঙ্ক রয়েছে, তবে তাদের কার্যকারিতা সীমাবদ্ধ (তারা কাঠামোগত তথ্য বহন করতে পারে না) এবং ত্রুটি-পরিচালনার জন্য তাদের ব্যবহার নিরুত্সাহিত করা হয় (এগুলি অপরিবর্তনযোগ্য ত্রুটির জন্য বোঝানো হয়)।
মরিচে, ত্রুটি পরিচালনার ব্যবহার Result। একটি সাধারণ উদাহরণ হবে:
fn halves_if_even(i: i32) -> Result<i32, Error> {
if i % 2 == 0 {
Ok(i / 2)
} else {
Err(/* something */)
}
}
fn do_the_thing(i: i32) -> Result<i32, Error> {
let i = match halves_if_even(i) {
Ok(i) => i,
Err(e) => return Err(e),
};
// use `i`
}
এটি দুর্দান্ত কারণ:
এটি আদর্শের চেয়ে কম, তবে এটি খুব ভার্জোজ। এই যেখানে প্রশ্ন চিহ্ন অপারেটর ?আসে।
উপরেরগুলি আবার লিখতে পারেন:
fn do_the_thing(i: i32) -> Result<i32, Error> {
let i = halves_if_even(i)?;
// use `i`
}
যা অনেক বেশি সংক্ষিপ্ত।
কি ?এখানে আছে সমতূল্য matchউপরে বিবৃতি। সংক্ষেপে বলতে গেলে: এটা unpacks Resultযদি ঠিক আছে এবং ফেরৎ ত্রুটি যদি না।
এটি একটি বিট জাদু, কিন্তু ত্রুটি পরিচালনা boilerplate, কেটে কিছু জাদু প্রয়োজন, এবং ব্যতিক্রমগুলি অসদৃশ তা অবিলম্বে দৃশ্যমান যা ফাংশন কল বা আউট ত্রুটি পারে আবার নাও পারে হল: ঐ যে সঙ্গে সুশোভিত করা হয় ?।
যাদুবিদ্যার একটি উদাহরণ এটি এর জন্যও কাজ করে Option:
// Assume
// fn halves_if_even(i: i32) -> Option<i32>
fn do_the_thing(i: i32) -> Option<i32> {
let i = halves_if_even(i)?;
// use `i`
}
এটি (অস্থির) Tryবৈশিষ্ট্য দ্বারা চালিত ।
আরো দেখুন:
Resultবা Option।
এটি পুনরুদ্ধারযোগ্য ত্রুটির ধরণের ফলাফল <টি, ই> এর জন্য ত্রুটি প্রচারের জন্য। এটি ফলাফলটিকে মোড়কে দেয় এবং আপনাকে অভ্যন্তরীণ মান দেয়।
ত্রুটি কেস পরিচালনা করার পরিবর্তে, আপনি এটিকে কলার কোডে প্রচার করুন এবং কেবলমাত্র ওকে ক্ষেত্রে মোকাবেলা করুন। উপকারটি হ'ল এটি প্রচুর বয়লারপ্লেটকে সরিয়ে ফাংশনটির বাস্তবায়নকে সহজ করে তোলে।
.unwrap()কোন ত্রুটির ক্ষেত্রে কোন আতঙ্কের সাথে সত্যিকারের সাথে বিভ্রান্ত হওয়ার দরকার নেই ।