rust 如何键入别名模板化结构

qltillow  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(120)

我可以给一个结构体设置别名,如下所示:

struct DummyStruct {}
use DummyStruct as MyStruct;

但是当涉及到模板化结构时:

struct TemplatedStruct<T> {
    v: T
}
use TemplatedStruct::<i32> as AnotherStruct;

我得到错误:

8 | use TemplatedStruct::<i32> as AnotherStruct;
  |                      ^ expected identifier

我如何修复它以作为模板化结构体的别名?

wdebmtf2

wdebmtf21#

use不创建别名,它导入,当与as一起使用时,重命名导入。
要创建类型别名,请使用type

type AnotherStruct = TemplatedStruct<i32>;

请注意,TemplatedStruct是一个泛型结构。Rust不使用术语“模板”。

67up9zun

67up9zun2#

当您在use声明中使用as时,严格地说,这不是类型别名-而是您只是使用另一个名称导入项。
实际的类型别名如下所示:

type MyStruct = DummyStruct;

您可以在此处指定泛型:

type AnotherStruct = TemplatedStruct::<i32>;

参见:

相关问题