首页 > 解决方案 > 从 const 泛型类型创建别名类型

问题描述

警告:这是几乎生锈。您需要执行此命令行:(rustup default nightlyrustup default stable返回到以前的配置)

我想从另一种类型中定义一种类型。如果我从一个 const 泛型类型(参见 1)创建一个类型,它就可以工作。但是如果我从另一个 const 泛型类型创建一个 const 泛型类型,它就不起作用(参见 2)

我应该怎么办?

#![feature(const_generics)]

struct Board<T, const WIDTH: usize, const HEIGHT: usize> {
    array: [[T; WIDTH]; HEIGHT],
}

type a = Board<i32,3,3>; // works (1)

type SquareBoard<T, const Dim: usize> = Board<T,WIDTH=Dim,HEIGHT=Dim>;  // doesn't work (2)

标签: rust

解决方案


我认为您不必拼出 const 参数名称(就像您不必拼出类型参数名称一样):

#![feature(const_generics)]

struct Board<T, const WIDTH: usize, const HEIGHT: usize> {
    array: [[T; WIDTH]; HEIGHT],
}

type a = Board<i32,3,3>; // works (1)

type SquareBoard<T, const Dim: usize> = Board<T, Dim, Dim>;  // works (2)

推荐阅读