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
每月 937 次下载
在 91 个crate(直接使用 4 个) 中使用
92KB
1K SLoC
模块 :: data_type
原数据类型的集合。
基本用例 :: 类型构造函数
在 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