5 个版本
0.1.4 | 2022 年 6 月 26 日 |
---|---|
0.1.3 | 2022 年 6 月 12 日 |
0.1.2 | 2022 年 5 月 25 日 |
0.1.1 | 2022 年 5 月 25 日 |
0.1.0 | 2022 年 5 月 25 日 |
#19 在 #solving
2,184 每月下载量
2MB
54K SLoC
模块 :: std_tools
用于解决一般性问题的工具集合。基本扩展语言而不破坏,因此可以单独使用或与其他此类模块一起使用。
示例 :: 实现
use std_tools::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_tools::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 >;
//
// }
依赖关系
~2.3–4MB
~90K SLoC