1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5#[cfg(feature = "bindgen")]
6include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
7
8#[cfg(all(not(feature = "bindgen")))]
9include!("bindings.rs");
10
11use libz_sys::*;
12
13unsafe impl Send for mp_idx_t {}
14unsafe impl Send for mp_mapopt_t {}
15
16use std::mem::MaybeUninit;
17
18impl Default for mp_mapopt_t {
19 fn default() -> Self {
20 unsafe {
21 let mut opt = MaybeUninit::uninit();
22 mp_mapopt_init(opt.as_mut_ptr());
23 opt.assume_init()
24 }
25 }
26}
27
28impl Default for mp_idxopt_t {
29 fn default() -> Self {
30 unsafe {
31 let mut opt = MaybeUninit::uninit();
32 mp_idxopt_init(opt.as_mut_ptr());
33 opt.assume_init()
34 }
35 }
36}
37
38#[cfg(test)]
40mod tests {
41 use super::*;
42 use std::mem::MaybeUninit;
43
44 #[test]
45 fn test_miniprot() {
46 unsafe {
47 let mut mo = MaybeUninit::uninit();
48 let mut io = MaybeUninit::uninit();
49 mp_start(); mp_mapopt_init(mo.as_mut_ptr()); mp_idxopt_init(io.as_mut_ptr()); mp_mapopt_check(mo.as_ptr()); let reference = std::ffi::CString::new("miniprot/test/DPP3-hs.gen.fa.gz").unwrap();
57 let query = std::ffi::CString::new("miniprot/test/DPP3-mm.pep.fa.gz").unwrap();
58
59 let mut mi: *mut mp_idx_t = mp_idx_load(reference.as_ptr() as *const i8, io.as_ptr(), 1); let mut mo = mo.assume_init();
62
63 mp_idx_print_stat(mi as *const mp_idx_t, mo.max_occ);
64
65 println!("\n\nMapping results\n\n");
66 mp_map_file(mi as *const mp_idx_t, query.as_ptr() as *const i8, &mo, 1 as i32);
67
68 mp_idx_destroy(mi);
69 }
70 }
71}