AppFlowy/frontend/rust-lib/lib-infra/src/util.rs

55 lines
1.0 KiB
Rust
Raw Normal View History

#[macro_export]
macro_rules! if_native {
($($item:item)*) => {$(
#[cfg(not(target_arch = "wasm32"))]
$item
)*}
}
#[macro_export]
macro_rules! if_wasm {
($($item:item)*) => {$(
#[cfg(target_arch = "wasm32")]
$item
)*}
}
pub fn move_vec_element<T, F>(
vec: &mut Vec<T>,
filter: F,
_from_index: usize,
to_index: usize,
) -> Result<bool, String>
2022-04-28 08:02:03 +00:00
where
F: FnMut(&T) -> bool,
2022-04-28 08:02:03 +00:00
{
match vec.iter().position(filter) {
None => Ok(false),
Some(index) => {
if vec.len() > to_index {
let removed_element = vec.remove(index);
vec.insert(to_index, removed_element);
Ok(true)
} else {
let msg = format!(
"Move element to invalid index: {}, current len: {}",
to_index,
vec.len()
);
Err(msg)
}
},
}
2022-04-28 08:02:03 +00:00
}
#[allow(dead_code)]
pub fn timestamp() -> i64 {
chrono::Utc::now().timestamp()
2022-04-28 08:02:03 +00:00
}
2023-01-30 03:11:19 +00:00
#[inline]
pub fn md5<T: AsRef<[u8]>>(data: T) -> String {
let md5 = format!("{:x}", md5::compute(data));
md5
2023-01-30 03:11:19 +00:00
}