vector start
This commit is contained in:
parent
7f22b4e425
commit
9abddc49ef
@ -200,3 +200,4 @@ pub mod common;
|
||||
pub mod logical;
|
||||
pub mod numeric;
|
||||
pub mod utils;
|
||||
pub mod vector;
|
||||
|
36
src/instructions/vector.rs
Normal file
36
src/instructions/vector.rs
Normal file
@ -0,0 +1,36 @@
|
||||
use rust_decimal::Decimal;
|
||||
use crate::push::state::PushState;
|
||||
|
||||
pub fn _concat<T>(vals: Vec<Vec<T>>) -> Option<Vec<T>>
|
||||
where
|
||||
T: Clone,
|
||||
{
|
||||
let mut concat_vec = vals[0].clone();
|
||||
concat_vec.extend(vals[1].clone().into_iter());
|
||||
Some(concat_vec)
|
||||
}
|
||||
make_instruction_clone!(vector_int, vector_int, _concat, Vec<i128>, 2);
|
||||
make_instruction_clone!(vector_float, vector_float, _concat, Vec<Decimal>, 2);
|
||||
make_instruction_clone!(vector_string, vector_string, _concat, Vec<Vec<char>>, 2);
|
||||
make_instruction_clone!(vector_boolean, vector_boolean, _concat, Vec<bool>, 2);
|
||||
make_instruction_clone!(vector_char, vector_char, _concat, Vec<char>, 2);
|
||||
make_instruction_clone!(string, string, _concat, Vec<char>, 2);
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::push::state::EMPTY_STATE;
|
||||
|
||||
#[test]
|
||||
fn test_vector_concat() {
|
||||
let mut test_state = EMPTY_STATE;
|
||||
|
||||
test_state.vector_int = vec![vec![4, 5, 6], vec![1, 2, 3]];
|
||||
vector_int_concat(&mut test_state);
|
||||
assert_eq!(vec![vec![1, 2, 3, 4, 5, 6]], test_state.vector_int);
|
||||
|
||||
test_state.string = vec![vec!['s', 't'], vec!['t', 'e']];
|
||||
string_concat(&mut test_state);
|
||||
assert_eq!(vec![vec!['t', 'e', 's', 't']], test_state.string);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user