collections of useful macros

example

```rust use usefulmacro::*; //get argument and into Vec //cargo run -- -n 100 let arg = args!(); asserteq!(arg,vec![format!("-n"),format!("100")]);

//get input and into String let s = input!(); println!("{:?}",s);

//power of two f64 number let p = powf!(2.,2.); assert_eq!(p,4.0);

//split a:&str by b:&str and collect into Vec
let s = splittovec!("aa.bb","."); assert_eq!(s,vec![format!("aa"),format!("bb")]);

// read .csv file and return Vec> let s = readcsv!("./data.csv"); asserteq!(s,vec![vec![format!("a"), format!("b"), format!("c")],vec![format!("1"), format!("2"), format!("3")],vec![format!("10"), format!("20"), format!("30")]]);

//return sorted vec // type can be Vec Vec Vec Vec Vec Vec Vec let s1 = sorted!(vec![1.2, 2.6, 0.2]); let s2 = sorted!(vec![8, 1i128, 5i128]); asserteq!(s1,vec![0.2,1.2,2.6]); asserteq!(s2,vec![1,5,8]);

// return sorted and deduped new Vec // type can be Vec Vec Vec Vec Vec Vec Vec let s1 = dedupedsorted!(vec![1.2, 1.2,2.6, 0.2]); let s2 = dedupedsorted!(vec![8, 1i128, ,8,5i128]); asserteq!(s1,vec![0.2,1.2,2.6]); asserteq!(s2,vec![1,5,8]);

//parse Vec element to f64, //type can be Vec<&str> //return Vec let v1 = vecparse!(vec!["15.", "2.9"]); let v2 = vecparse!(vec!["15", "2"]); let v3 = vecparse!(vec![".15", ".2"]); asserteq!(vec![15.0, 2.9], v1); asserteq!(vec![15.0, 2.0], v2); asserteq!(vec![0.15, 0.2], v3);

//vecasstring!() used to // convert vec item to String, // type can be Vec Vec Vec Vec Vec,Vec<&str> // return Vec let v1 = vecasstring!(vec!["15.", "2.9"]); let v2 = vecasstring!(vec![15, 2]); let v3 = vecasstring!(vec![0.15, 0.2]); asserteq!(vec!["15.", "2.9"], v1); asserteq!(vec!["15", "2"], v2); asserteq!(vec!["0.15", "0.2"], v3); rust //snailsort!() return the array elements arranged from outermost //elements to the middle element, traveling clockwise.n x n //type can be Vec> //return Vec ```

```rust let v1 = snailsort!(vec![vec![1, 2, 3], vec![4, 5, 6], vec![7, 8, 9]]); let v2 = snailsort!(vec![vec![1.1, 2.1, 3.1],vec![4.1, 5.1, 6.1],vec![7.1, 8.1, 9.1]]); asserteq!(vec![1, 2, 3, 6, 9, 8, 7, 4, 5], v1); asserteq!(vec![1.1, 2.1, 3.1, 6.1, 9.1, 8.1, 7.1, 4.1, 5.1], v2);

// multiplymatrix!() return the mutiply result of two matrix // take two matrix and type can be Vec> // return Vec let m1: Vec> = vec![vec![1.0, 2.0], vec![1.0, 2.0]]; let m2: Vec> = vec![vec![0.0, 0.0], vec![0.0, 0.5]]; let mulresult = multiplymatrix!(&m2, &m1); asserteq!(mul_result, vec![[0.0, 0.0], [0.5, 1.0]]); ```