Python에서 Rust까지의 포트에서 작업 중이며 Python 에서처럼 Rust에서 자연스럽게 표현할 수없는 코드가 발생했습니다.
한 가지 경우는 기본 매개 변수를 사용하는 것입니다.
class Foo:
def __init__(self, a="Hello"):
self._a = a
Rust에서는 빌더를 사용하여이를 구현할 수 있습니다.
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();
이것은 질문을 낳는다 : 포트에 대한 API를 유지하는 것이 더 낫거나 포팅 언어의 관용구를 사용하는 것이 더 낫습니까? API가 얼마나 잘 알려진 지에 달려 있습니까?