| //! Utilities related to FFI bindings. |
| |
| // If we have std, use it. |
| #[cfg(windows)] |
| #[cfg(feature = "std")] |
| pub use std::os::raw::{c_char, c_int, c_long, c_short, c_uint, c_ulong, c_ushort}; |
| #[cfg(not(windows))] |
| #[cfg(feature = "std")] |
| pub use { |
| std::ffi::{CStr, CString, FromBytesWithNulError, NulError}, |
| std::os::raw::c_char, |
| }; |
| |
| // If we don't have std, we can depend on core and alloc having these features |
| // in Rust 1.64+. |
| #[cfg(not(windows))] |
| #[cfg(all(feature = "alloc", not(feature = "std")))] |
| pub use alloc::ffi::{CString, NulError}; |
| #[cfg(windows)] |
| #[cfg(not(feature = "std"))] |
| pub use core::ffi::{c_char, c_int, c_long, c_short, c_uint, c_ulong, c_ushort, c_void}; |
| #[cfg(not(windows))] |
| #[cfg(not(feature = "std"))] |
| pub use core::ffi::{c_char, CStr, FromBytesWithNulError}; |