我有一个struct带有大量字段的 Rust,所有这些字段都是它们自己Default。我想impl Default为它创建一个自定义,具有以下语义:
Default::default我希望这样做:
impl Default for Foo {
fn default() -> Self {
Self {
thing: 2,
..Default::default()
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但这实际上会导致未经检查的递归,因为..Default::default()调用Self::default()而不是$member::default()针对Self.
除了编写自定义宏或显式列出每个字段之外,有什么方法可以实现此目的吗?
我正在编写一个Perl模块,并且在运行测试时遇到了这个令人困惑的错误消息.
sub new {
my $class = shift;
my $self = @_;
$word = $self{word} || die "No word provided.";
@definitions = @{decode_json(get($urban_url . $word))->{'list'}} || die "Error during fetch/decode.";
@tags = @{decode_json(get($urban_url . $word))->{'tags'}} || "Error during fetch/decode.";
bless($self, $class);
return $self;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,$self声明正确.word是在new子例程上面声明的全局变量.失败发生在use语句的每个测试中,并追溯到分配$word.