E3020

E3020#

结构体表达式中出现了意外的 =。结构体表达式的正确语法是 { field: expression }

错误示例#

pub(all) struct S {
  a : Int
  b : Int
}

fn replace_a(s : S) -> S {
  let ss = { ..s, a = 1 } // Error: Unexpected `=` in struct expression.
  ss
}

test {
  ignore(replace_a({ a: 0, b: 2 }))
}

建议#

更改结构体表达式,使用正确的语法:

///|
pub(all) struct S {
  a : Int
  b : Int
}

///|
fn replace_a(s : S) -> S {
  let ss = { ..s, a: 1 }
  ss
}

///|
test {
  inspect(replace_a({ a: 0, b: 2 }).a, content="1")
}