tigerbeetle_unofficial_sys/
lib.rs

1#![doc(
2    html_logo_url = "https://avatars.githubusercontent.com/u/187310527",
3    html_favicon_url = "https://avatars.githubusercontent.com/u/187310527?s=256"
4)]
5#![allow(non_upper_case_globals)]
6#![allow(non_camel_case_types)]
7#![allow(non_snake_case)]
8
9include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
10
11/// Available only with `generated-safe` feature
12#[cfg(feature = "generated-safe")]
13#[allow(clippy::unnecessary_cast, clippy::assign_op_pattern)]
14#[doc(hidden)]
15pub mod generated_safe {
16    include!(concat!(env!("OUT_DIR"), "/generated.rs"));
17}
18
19#[cfg(test)]
20mod linked {
21    //! Bunch of dummies to ensure eagerly that everything is linked properly.
22    //!
23    //! Executing them will definitely cause undefined behaviour, so they're ignored, which is
24    //! enough to check the linker does its job.
25
26    use std::{mem, ptr};
27
28    use bytemuck::Zeroable as _;
29
30    #[test]
31    #[ignore = "only checks linkage"]
32    fn tb_client_init() {
33        unsafe {
34            let mut raw = mem::zeroed();
35            let address = "3000".as_bytes();
36            _ = crate::tb_client_init(
37                &mut raw,
38                1_u128.to_le_bytes().as_ptr(),
39                address.as_ptr().cast(),
40                address.len().try_into().unwrap(),
41                ptr::null::<()>() as usize,
42                None,
43            );
44        }
45    }
46
47    #[test]
48    #[ignore = "only checks linkage"]
49    fn tb_client_init_echo() {
50        unsafe {
51            let mut raw = mem::zeroed();
52            let address = "3000".as_bytes();
53            _ = crate::tb_client_init_echo(
54                &mut raw,
55                1_u128.to_le_bytes().as_ptr(),
56                address.as_ptr().cast(),
57                address.len().try_into().unwrap(),
58                ptr::null::<()>() as usize,
59                None,
60            );
61        }
62    }
63
64    #[test]
65    #[ignore = "only checks linkage"]
66    fn tb_client_init_parameters() {
67        unsafe {
68            let mut raw = mem::zeroed();
69            _ = crate::tb_client_init_parameters(
70                &mut raw,
71                &mut crate::tb_init_parameters_t::zeroed(),
72            );
73        }
74    }
75
76    #[test]
77    #[ignore = "only checks linkage"]
78    fn tb_client_completion_context() {
79        unsafe {
80            let mut client = mem::zeroed();
81            _ = crate::tb_client_completion_context(&mut client, ptr::null_mut());
82        }
83    }
84
85    #[test]
86    #[ignore = "only checks linkage"]
87    fn tb_client_submit() {
88        unsafe {
89            let mut client = mem::zeroed();
90            _ = crate::tb_client_submit(&mut client, ptr::null_mut());
91        }
92    }
93
94    #[test]
95    #[ignore = "only checks linkage"]
96    fn tb_client_deinit() {
97        unsafe {
98            let mut client = mem::zeroed();
99            _ = crate::tb_client_deinit(&mut client);
100        }
101    }
102
103    #[test]
104    #[ignore = "only checks linkage"]
105    fn tb_client_register_log_callback() {
106        unsafe {
107            _ = crate::tb_client_register_log_callback(None, false);
108        }
109    }
110}