#[macro_export]
macro_rules! contains_str {
( $string:expr; $array:expr ) => ({
let bytes = $string.as_bytes();
let bytes_len = bytes.len();
let mut pat_start = 0u8;
for slice in $array {
if slice != "" {
pat_start = slice.as_bytes()[0];
break
}
}
let array_len = $array.len();
let mut is_contained = false;
let mut counter = 0;
'outer: for i in 0..bytes_len {
counter = 0;
if pat_start == bytes[i] {
'inner: for ii in 0..array_len {
let slice = $array[ii].as_bytes();
let len = slice.len();
if len == 0 { if ii == array_len - 1 {
is_contained = true;
break 'outer
} else {
continue 'inner
} }
if i + len > bytes_len {
break 'outer
}
if *slice == bytes[i + counter..i + counter + len] {
if ii == array_len - 1 {
is_contained = true;
break 'outer
} else { counter += len
}
} else {
continue 'outer
}
}
}
}
is_contained
});
}