मैं पायथन से रस्ट तक के पोर्ट पर काम कर रहा हूं और कुछ कोड में भाग गया हूं जो स्वाभाविक रूप से रस्ट में व्यक्त नहीं किए जा सकते हैं क्योंकि वे पायथन में हो सकते हैं।
इसका एक मामला डिफ़ॉल्ट मापदंडों का उपयोग कर रहा है:
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!")
हालाँकि, Rust में, आपको कुछ लिखने की आवश्यकता होगी:
let foo = FooBuilder::new().change_a("Hello, World!").build();
यह प्रश्न की ओर जाता है: क्या पोर्ट के लिए एपीआई बनाए रखना बेहतर है, या पोर्टिंग भाषा के मुहावरों का उपयोग करना बेहतर है? क्या यह इस बात पर निर्भर करता है कि एपीआई को कितनी अच्छी तरह से जाना जाता है?