#![ doc( html_logo_url = "https://raw.githubusercontent.com/Wandalen/wTools/master/asset/img/logo_v3_trans_square.png" ) ]
#![ warn( rust_2018_idioms ) ]
#![ warn( missing_debug_implementations ) ]
#![ warn( missing_docs ) ]
// #![ allow( non_camel_case_types ) ]
// use core::cmp::PartialEq;
// //
// pub struct append_vectors_once
// {
// dst : Vec,
// src : Vec>,
// start_from : usize,
// on_equalize : Option bool>,
// on_evaluate1 : Option T>,
// on_evaluate2 : Option T>,
// formed : u8,
// }
// //
// impl Default for append_vectors_once
// {
// fn default() -> Self
// {
// let opts = Self
// {
// src : vec![],
// dst : vec![],
// start_from : 0,
// on_evaluate1 : None,
// on_evaluate2 : None,
// on_equalize : None,
// formed : 0,
// };
// return opts;
// }
// }
// /* qqq : ?? */ /* aaa : not actual task, old code */
// impl append_vectors_once
// {
// pub fn src( &mut self, src : Vec> ) -> &mut Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// self.src = src;
// self
// }
// //
// pub fn dst( &mut self, dst : Vec ) -> &mut Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// self.dst= dst;
// self
// }
// //
// pub fn start_from( &mut self, start_from : usize ) -> &mut Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// self.start_from = start_from;
// self
// }
// //
// pub fn on_equalize( &mut self, on_equalize : fn( &T, &T ) -> bool ) -> &mut Self
// {
// assert!( self.on_evaluate1.is_none() && self.on_evaluate2.is_none(), "Expects no evaluation callbacks." );
// assert!( self.formed == 0, "Context is already formed" );
// self.on_equalize = Some( on_equalize );
// self
// }
// //
// pub fn on_evaluate1( &mut self, on_evaluate1 : fn( &T ) -> T ) -> &mut Self
// {
// assert!( self.on_equalize.is_none(), "Expects no equalizer callback." );
// assert!( self.formed == 0, "Context is already formed" );
// self.on_evaluate1 = Some( on_evaluate1 );
// self
// }
// //
// pub fn on_evaluate2( &mut self, on_evaluate2 : fn( &T ) -> T ) -> &mut Self
// {
// assert!( self.on_equalize.is_none(), "Expects no equalizer callback." );
// assert!( self.formed == 0, "Context is already formed" );
// self.on_evaluate2 = Some( on_evaluate2 );
// self
// }
// //
// pub fn form( self ) -> Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// Self { formed : 1, .. self }
// }
// //
// fn to_left_index( &self ) -> left_index
// {
// let mut opts : left_index = left_index::default();
// opts.src( self.dst.clone() );
// if self.on_evaluate1.is_some()
// {
// opts.on_evaluate1( self.on_evaluate1.unwrap() );
// }
// if self.on_evaluate2.is_some()
// {
// opts.on_evaluate2( self.on_evaluate2.unwrap() );
// }
// opts.start_from( self.start_from );
// opts
// }
// //
// pub fn call( &mut self ) -> Vec
// {
// let mut index_finder = self.to_left_index();
// for vec in &self.src
// {
// for el in vec
// {
// index_finder.ins( *el );
// if index_finder.call().is_none()
// {
// self.dst.push( *el );
// }
// }
// }
// self.dst.clone()
// }
// }
// //
// pub struct left_index
// {
// src : Vec,
// ins : T,
// start_from : usize,
// on_evaluate1 : Option T>,
// on_evaluate2 : Option T>,
// on_equalize : Option bool>,
// formed : u8,
// }
// //
// impl Default for left_index
// {
// fn default() -> Self
// {
// let opts = Self
// {
// src : vec![],
// ins : Default::default(),
// start_from : 0,
// on_equalize : None,
// on_evaluate1 : None,
// on_evaluate2 : None,
// formed : 0,
// };
// return opts;
// }
// }
// impl left_index
// {
// pub fn src( &mut self, src : Vec ) -> &mut Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// self.src = src;
// self
// }
// //
// pub fn ins( &mut self, ins : T ) -> &mut Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// self.ins = ins;
// self
// }
// //
// pub fn start_from( &mut self, start_from : usize ) -> &mut Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// self.start_from = start_from;
// self
// }
// //
// pub fn on_equalize( &mut self, on_equalize : fn( &T, &T ) -> bool ) -> &mut Self
// {
// assert!( self.on_evaluate1.is_none() && self.on_evaluate2.is_none(), "Expects no evaluation callbacks." );
// assert!( self.formed == 0, "Context is already formed" );
// self.on_equalize = Some( on_equalize );
// self
// }
// //
// pub fn on_evaluate1( &mut self, on_evaluate1 : fn( &T ) -> T ) -> &mut Self
// {
// assert!( self.on_equalize.is_none(), "Expects no equalizer callback." );
// assert!( self.formed == 0, "Context is already formed" );
// self.on_evaluate1 = Some( on_evaluate1 );
// self
// }
// //
// pub fn on_evaluate2( &mut self, on_evaluate2 : fn( &T ) -> T ) -> &mut Self
// {
// assert!( self.on_equalize.is_none(), "Expects no equalizer callback." );
// assert!( self.formed == 0, "Context is already formed" );
// self.on_evaluate2 = Some( on_evaluate2 );
// self
// }
// //
// pub fn form( self ) -> Self
// {
// assert!( self.formed == 0, "Context is already formed" );
// Self { formed : 1, .. self }
// }
// //
// pub fn call( &self ) -> Option
// {
// if self.on_equalize.is_some()
// {
// let equalizer = self.on_equalize.unwrap();
// for i in 0..self.src.len()
// {
// if equalizer( &self.src[ i ], &self.ins )
// {
// return Some( i );
// }
// }
// }
// else if self.on_evaluate1.is_some()
// {
// let ins;
// let evaluate1 = self.on_evaluate1.unwrap();
// if self.on_evaluate2.is_some()
// {
// let evaluate2 = self.on_evaluate2.unwrap();
// ins = evaluate2( &self.ins );
// }
// else
// {
// ins = evaluate1( &self.ins );
// }
// for i in self.start_from..self.src.len()
// {
// if evaluate1( &self.src[ i ] ) == ins
// {
// return Some( i );
// }
// }
// }
// else
// {
// assert!( self.on_evaluate2.is_none(), "{}", "Expects callback {-on_evaluate1-}." );
// for i in self.start_from..self.src.len()
// {
// if self.src[ i ] == self.ins
// {
// return Some( i );
// }
// }
// }
// None
// }
// }