1use std::path::{Path, PathBuf};
2
3pub fn resolve_resource_path(path: impl AsRef<Path>) -> PathBuf {
11 let path = path.as_ref();
12 if path.is_absolute() {
13 return path.to_path_buf();
14 }
15
16 if let Ok(exe) = std::env::current_exe()
17 && let Some(exe_dir) = exe.parent()
18 {
19 let candidate = exe_dir.join(path);
20 if candidate.exists() {
21 return candidate;
22 }
23 }
24
25 path.to_path_buf()
26}
27
28pub fn slice_to_bytes<T>(slice: &[T]) -> &[u8] {
29 let size = std::mem::size_of::<T>();
30 let len = slice.len() * size;
31 let ptr = slice.as_ptr() as *const u8;
32 unsafe { std::slice::from_raw_parts(ptr, len) }
33}