আমি পাইথন থেকে মরচে যাওয়ার বন্দরে কাজ করছি এবং এমন কোনও কোডে চলে এসেছি যা পাইথনের মতো রাস্টের মতো স্বাভাবিকভাবে প্রকাশ করা যায় না।
এর একটি ক্ষেত্রে ডিফল্ট পরামিতি ব্যবহার করা হচ্ছে:
class Foo:
def __init__(self, a="Hello"):
self._a = a
মরিচে, আপনি এটি কোনও বিল্ডার ব্যবহার করে প্রয়োগ করতে পারেন:
struct FooBuilder {
a: &'static str,
}
struct Foo {
_a: &'static str
}
impl FooBuilder {
fn new() -> FooBuilder {
FooBuilder {
a: "Hello",
}
}
fn change_a(self, new_a: &'static str) -> FooBuilder {
FooBuilder {
a: new_a,
..self
}
}
fn build(self) -> Foo {
Foo {
_a: self.a,
}
}
}
পাইথনে ক্লাসটি ব্যবহার করার জন্য, এটি সহজ:
foo = Foo("Hello, World!")
তবে মরিচায় আপনাকে এমন কিছু লিখতে হবে:
let foo = FooBuilder::new().change_a("Hello, World!").build();
এটি প্রশ্নের দিকে পরিচালিত করে: কোনও বন্দরের জন্য একটি এপিআই বজায় রাখা ভাল, বা পোর্টিং ভাষার আইডিয়ামগুলি ব্যবহার করা আরও ভাল? এটি এপিআই শুরু করার জন্য কতটা সুপরিচিত তার উপর নির্ভর করে?