Rust 有办法将字符串类型限制为特定值(字符串文字类型)吗?

Ell*_*aha 1 rust

在 Typescript 中,有多种方法可以输入值,因此它只能是特定的字符串

例如

type example = "hello" | "world";
Run Code Online (Sandbox Code Playgroud)

我是否仅限于 Rust 中的“String”类型,或者有没有办法像 Typescript 中那样缩小范围?

现在我有:

pub struct ButtonProps {
    pub color: String
}
Run Code Online (Sandbox Code Playgroud)

但颜色可以是任何东西,我只想它是“主要”或“次要”

我该怎么做呢?

Sil*_*olo 7

不,Rust 中没有等效的功能。我们只需使用enumRust 即可完成相同的任务。

#[derive(Copy, Clone, ...)]
pub enum ButtonPropsColor { Hello, World }

pub struct ButtonProps {
  pub color: ButtonPropsColor,
}
Run Code Online (Sandbox Code Playgroud)

然后,如果您愿意,您可以编写转换函数来从String到ButtonPropsColor,反之亦然。

impl From<&str> for ButtonPropsColor {
  fn from(s: &str) -> ButtonPropsColor {
    ...
  }
}

impl From<ButtonPropsColor> for String {
  fn from(s: ButtonPropsColor) -> String {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)