non_std 0.1.4

Collection of general purpose tools for solving problems. Fundamentally extend the language without spoiling, so may be used solely or in conjunction with another module of such kind.
Documentation

// // use wtools::vector;
// use wtools::vector::{ left_index, append_vectors_once };

// //

// #[test]
// fn append_vectors_once()
// {
//   println!( "empty vector" );
//   let mut appender: append_vectors_once<u8> = append_vectors_once::default();
//   let got = appender.call();
//   let exp: Vec<u8> = vec![];
//   a_id!( got, exp );

//   println!( "dst - filled, src - empty" );
//   let mut appender: append_vectors_once<u8> = append_vectors_once::default();
//   appender.dst( vec![ 1, 2 ] );
//   let got = appender.call();
//   a_id!( got, vec![ 1, 2 ] );

//   println!( "dst - filled, src - filled, all is unical elements" );
//   let mut appender: append_vectors_once<u8> = append_vectors_once::default();
//   appender.dst( vec![ 1, 2 ] );
//   appender.src( vec![ vec![ 3, 4 ], vec![ 5, 6 ] ] );
//   let got = appender.call();
//   a_id!( *got, vec![ 1, 2, 3, 4, 5, 6 ] );

//   println!( "dst - filled, src - filled, some is duplicated" );
//   let mut appender: append_vectors_once<u8> = append_vectors_once::default();
//   appender.dst( vec![ 1, 2 ] );
//   appender.src( vec![ vec![ 1, 3 ], vec![ 2, 4 ] ] );
//   let got = appender.call();
//   a_id!( got, vec![ 1, 2, 3, 4 ] );

//   println!( "dst - filled, src - filled, all is duplicated" );
//   let mut appender: append_vectors_once<u8> = append_vectors_once::default();
//   appender.dst( vec![ 1, 2 ] );
//   appender.src( vec![ vec![ 1, 1 ], vec![ 2, 2 ] ] );
//   let got = appender.call();
//   a_id!( got, vec![ 1, 2 ] );

//   println!( "dst - filled, src - filled, all is duplicated" );
//   let mut appender: append_vectors_once<u8> = append_vectors_once::default();
//   appender.dst( vec![ 1, 2 ] );
//   appender.src( vec![ vec![ 1, 2 ], vec![ 2, 1 ] ] );
//   let got = appender.call();
//   a_id!( got, vec![ 1, 2 ] );
// }

// //

// #[test]
// fn left_index()
// {
//   println!( "empty vector" );
//   let mut src : left_index<u8> = left_index::default();
//   src.ins( 1 );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, not matches" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 4 );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, matches one" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 2 );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches several" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 2 ] );
//   src.ins( 2 );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches all" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 2, 2, 2 ] );
//   src.ins( 2 );
//   let got = src.call();
//   a_id!( got, Some( 0 ) );
// }

// //

// #[test]
// fn left_index_with_equalizer()
// {
//   fn equalizer( src1 : &u8, src2 : &u8 ) -> bool
//   {
//     *src1 == *src2
//   }

//   /* */

//   println!( "empty vector" );
//   let mut src : left_index<u8> = left_index::default();
//   src.ins( 1 );
//   src.on_equalize( equalizer );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, not matches" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 4 );
//   src.on_equalize( equalizer );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, matches one" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 2 );
//   src.on_equalize( equalizer );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches several" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 2 ] );
//   src.ins( 2 );
//   src.on_equalize( equalizer );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches all" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 2, 2, 2 ] );
//   src.ins( 2 );
//   src.on_equalize( equalizer );
//   let got = src.call();
//   a_id!( got, Some( 0 ) );
// }

// //

// #[test]
// fn left_index_with_evaluator()
// {
//   fn evaluator1( src : &u8 ) -> u8
//   {
//     *src
//   }

//   /* */

//   println!( "empty vector" );
//   let mut src : left_index<u8> = left_index::default();
//   src.ins( 1 );
//   src.on_evaluate1( evaluator1 );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, not matches" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 4 );
//   src.on_evaluate1( evaluator1 );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, matches one" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 2 );
//   src.on_evaluate1( evaluator1 );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches several" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 2 ] );
//   src.ins( 2 );
//   src.on_evaluate1( evaluator1 );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches all" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 2, 2, 2 ] );
//   src.ins( 2 );
//   src.on_evaluate1( evaluator1 );
//   let got = src.call();
//   a_id!( got, Some( 0 ) );
// }

// //

// #[test]
// fn left_index_with_two_evaluators()
// {
//   fn evaluator1( src : &u8 ) -> u8
//   {
//     *src
//   }
//   fn evaluator2( src : &u8 ) -> u8
//   {
//     *src
//   }

//   /* */

//   println!( "empty vector" );
//   let mut src : left_index<u8> = left_index::default();
//   src.ins( 1 );
//   src.on_evaluate1( evaluator1 );
//   src.on_evaluate1( evaluator2 );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, not matches" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 4 );
//   src.on_evaluate1( evaluator1 );
//   src.on_evaluate1( evaluator2 );
//   let got = src.call();
//   a_id!( got, None );

//   println!( "filled vector, matches one" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 3 ] );
//   src.ins( 2 );
//   src.on_evaluate1( evaluator1 );
//   src.on_evaluate1( evaluator2 );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches several" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 1, 2, 2 ] );
//   src.ins( 2 );
//   src.on_evaluate1( evaluator1 );
//   src.on_evaluate1( evaluator2 );
//   let got = src.call();
//   a_id!( got, Some( 1 ) );

//   println!( "filled vector, matches all" );
//   let mut src : left_index<u8> = left_index::default();
//   src.src( vec![ 2, 2, 2 ] );
//   src.ins( 2 );
//   src.on_evaluate1( evaluator1 );
//   src.on_evaluate1( evaluator2 );
//   let got = src.call();
//   a_id!( got, Some( 0 ) );

// }

// /*
//   append_vectors_once
//   left_index
//   left_index_with_equalizer
//   left_index_with_evaluator
//   left_index_with_two_evaluators
// */