我如何在 Nim 中使用“概念”?

How do I use a `concept` in Nim?

我想知道如何在 nim (0.13) 中使用 "concept"。我有以下代码:

type
  T = concept t
    t.a is string

  T0 = ref object
    a: string

  T1 = ref object
    a: string
    q: string

proc echoT(t: T) : void =
  echo "hello " & t.a

echoT(T0(a: "T0"))
echoT(T1(a: "T1", q: "q"))

然而,编译器在第一次调用 echoT 时报错:

t.nim(21, 6) Error: type mismatch: got (T0)

这与将 echoT 声明替换为:

的效果不一样吗?
proc echoT[T](t: T): void = echo "hello " & t.a

(编译和 运行),除了在概念版本中,约束 t.a is string 是否强制执行?

如何让编译器识别概念的使用?

你的例子编译并适用于我 (Nim 0.13.0)。有没有可能是你的源文件打错了?