E0027

E0027#

Warning name: deprecated_syntax

语法已弃用。请参考警告消息,了解原因和潜在修复方法。

例如,一种已弃用的用法是将构造器当作函数使用。应改为用 lambda 包装构造器调用。

错误示例#

enum Message {
  Add(String)
} derive(Show)

fn perform[T](message : (T) -> Message, produce : () -> T) -> Message {
  //
  // Warning: The syntax fn f[..] for declaring polymorphic function is 
  // deprecated. Use fn[..] f instead.
  message(produce())
}

fn main {
  println(perform(Add, fn() { "Hello, world!" }))
  //              ^^^
  // Warning: Using constructor as function directly is
  // deprecated. Use the partial application syntax instead
}

建议#

根据警告信息迁移代码。在这种情况下,应将代码修改为使用 lambda。

///|
enum Message {
  Add(String)
}

///|
fn[T] perform(message : (T) -> Message, produce : () -> T) -> Message {
  message(produce())
}

///|
fn main {
  match perform(x => Add(x), fn() { "Hello, world!" }) {
    Add(message) => println(message)
  }
}