#module #fundamental #general-purpose #constructor #problem #collection #solving

no-std std_tools

用于解决一般性问题的工具集合。基本扩展语言而不破坏,因此可以单独使用或与其他此类模块一起使用。

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

Download history 5/week @ 2024-03-31

2,184 每月下载量

MIT 许可证

2MB
54K SLoC

模块 :: std_tools

experimental rust-status docs.rs discord

用于解决一般性问题的工具集合。基本扩展语言而不破坏,因此可以单独使用或与其他此类模块一起使用。

示例 :: 实现

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