18 个版本 (8 个破坏性更新)

新版本 0.9.0 2024 年 8 月 16 日
0.8.0 2024 年 6 月 29 日
0.7.0 2024 年 5 月 11 日
0.6.0 2024 年 3 月 16 日
0.1.9 2022 年 7 月 15 日

#1 in #primal

Download history 159/week @ 2024-04-26 158/week @ 2024-05-03 379/week @ 2024-05-10 216/week @ 2024-05-17 233/week @ 2024-05-24 421/week @ 2024-05-31 186/week @ 2024-06-07 262/week @ 2024-06-14 240/week @ 2024-06-21 423/week @ 2024-06-28 74/week @ 2024-07-05 220/week @ 2024-07-12 276/week @ 2024-07-19 280/week @ 2024-07-26 172/week @ 2024-08-02 176/week @ 2024-08-09

每月 937 次下载
91 个crate(直接使用 4 个) 中使用

MIT 许可证

92KB
1K SLoC

模块 :: data_type

experimental rust-status docs.rs Open in Gitpod discord

原数据类型的集合。

基本用例 :: 类型构造函数

在 Rust 中,你通常需要将给定类型包装成一个新的类型。孤儿规则的作用主要是防止你为外部类型实现外部特质。为了克服这种限制,开发者通常将外部类型包装成元组,引入新的类型。类型构造函数正是这样做的,并为构造的类型自动实现 From、Into、Deref 等特质。

types 负责生成 Single、Pair、Homopair、Many 的代码。每个类型构造函数都有其自己的关键字,但 Pair 和 Homopair 在构成类型方面的关键字是相同的。可以一次性定义所有类型。

#[ cfg( feature = "enabled" ) ]
{
  use data_type::prelude::*;

  // qqq : xxx : write please

}

基本用例 :: make - 可变参数构造函数

实现 From_0、From1 等至 MakeN 的特质,以提供使用不同参数集构造你的结构体的接口。在这个例子中,Struct1 可以不带参数、单个参数或两个参数来构造。

  • 不带参数的构造函数将字段填充为零。
  • 带单个参数的构造函数将两个字段都设置为参数的值。
  • 带两个参数的构造函数设置每个字段的单独值。
#[ cfg( feature = "make" ) ]
{
  use type_constructor::prelude::*;

  #[ derive( Debug, PartialEq ) ]
  struct Struct1
  {
    a : i32,
    b : i32,
  }

  impl From_0 for Struct1
  {
    fn from_0() -> Self
    {
      Self { a : 0, b : 0 }
    }
  }

  impl From1< i32 > for Struct1
  {
    fn from1( val : i32 ) -> Self
    {
      Self { a : val, b : val }
    }
  }

  impl From2< i32, i32 > for Struct1
  {
    fn from2( val1 : i32, val2 : i32 ) -> Self
    {
      Self { a : val1, b : val2 }
    }
  }

  let got : Struct1 = from!();
  let exp = Struct1{ a : 0, b : 0 };
  assert_eq!( got, exp );

  let got : Struct1 = from!( 13 );
  let exp = Struct1{ a : 13, b : 13 };
  assert_eq!( got, exp );

  let got : Struct1 = from!( 1, 3 );
  let exp = Struct1{ a : 1, b : 3 };
  assert_eq!( got, exp );
}

添加到您的项目中

cargo add data_type

从仓库中尝试

git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/type_constructor_multiple
cargo run

依赖项