4 个版本
0.1.4 | 2022年6月26日 |
---|---|
0.1.3 | 2022年6月12日 |
0.1.2 | 2022年5月25日 |
0.1.0 | 2022年5月25日 |
在 开发工具 中排名 2504
每月下载量 2,178
2MB
54K SLoC
模块 :: std_x
用于解决问题的通用工具集合。本质上扩展了语言而不破坏,因此可以单独使用或与另一类模块结合使用。
示例 :: 实现
use std_x::prelude::*;
fn main()
{
println!( "implements!( 13_i32 => Copy ) : {}", implements!( 13_i32 => Copy ) );
println!( "implements!( Box::new( 13_i32 ) => Copy ) : {}", implements!( Box::new( 13_i32 ) => Copy ) );
}
示例 :: 类型构造函数
在 Rust 中,你通常需要将给定类型包裹成新的类型。孤儿规则的作用主要是防止你对外部类型实现外部特质。为了克服这种限制,开发者通常将外部类型包裹成元组,引入新的类型。类型构造函数正是这样做的,并为构造类型自动实现了 From、Into、Deref 等特质。
宏 types 负责生成 Single、Pair、Homopair、Many 的代码。每个类型构造函数都有其特定的关键字,但 Pair 和 Homopair 使用相同的关键字,不同在于组成类型的数量。可以一次性定义所有类型。
use std_x::prelude::*;
types!
{
single MySingle : f32;
single SingleWithParametrized : std::sync::Arc< T : Copy >;
single SingleWithParameter : < T >;
pair MyPair : f32;
pair PairWithParametrized : std::sync::Arc< T1 : Copy >, std::sync::Arc< T2 : Copy >;
pair PairWithParameter : < T1, T2 >;
pair MyHomoPair : f32;
pair HomoPairWithParametrized : std::sync::Arc< T : Copy >;
pair HomoPairWithParameter : < T >;
many MyMany : f32;
many ManyWithParametrized : std::sync::Arc< T : Copy >;
many ManyWithParameter : < T >;
}
示例 :: make - 可变参数构造函数
实现特质 [Make0]、[Make1] 直至 MakeN,以提供使用不同参数集构造你的结构的接口。在这个示例结构中,Struct1 可以无参数、单参数或双参数构造。
- 无参数构造函数将字段填充为零。
- 单参数构造函数将两个字段都设置为参数的值。
- 双参数构造函数设置每个字段的独立值。
use std_x::prelude::*;
#[ derive( Debug, PartialEq ) ]
struct Struct1
{
a : i32,
b : i32,
}
impl Make0 for Struct1
{
fn make_0() -> Self
{
Self { a : 0, b : 0 }
}
}
impl Make1< i32 > for Struct1
{
fn make_1( val : i32 ) -> Self
{
Self { a : val, b : val }
}
}
impl Make2< i32, i32 > for Struct1
{
fn make_2( val1 : i32, val2 : i32 ) -> Self
{
Self { a : val1, b : val2 }
}
}
let got : Struct1 = make!();
let exp = Struct1{ a : 0, b : 0 };
assert_eq!( got, exp );
let got : Struct1 = make!( 13 );
let exp = Struct1{ a : 13, b : 13 };
assert_eq!( got, exp );
let got : Struct1 = make!( 1, 3 );
let exp = Struct1{ a : 1, b : 3 };
assert_eq!( got, exp );
添加到您的项目中
cargo add std_x
依赖项
~2.2–4MB
~87K SLoC