nix_bindings_fetchers/
lib.rs

1use anyhow::{Context as _, Result};
2use nix_bindings_fetchers_sys as raw;
3use nix_bindings_util::context::{self, Context};
4use std::ptr::NonNull;
5
6pub struct FetchersSettings {
7    pub(crate) ptr: NonNull<raw::fetchers_settings>,
8}
9impl Drop for FetchersSettings {
10    fn drop(&mut self) {
11        unsafe {
12            raw::fetchers_settings_free(self.ptr.as_ptr());
13        }
14    }
15}
16impl FetchersSettings {
17    pub fn new() -> Result<Self> {
18        let mut ctx = Context::new();
19        let ptr = unsafe { context::check_call!(raw::fetchers_settings_new(&mut ctx))? };
20        Ok(FetchersSettings {
21            ptr: NonNull::new(ptr).context("fetchers_settings_new unexpectedly returned null")?,
22        })
23    }
24
25    pub fn raw_ptr(&self) -> *mut raw::fetchers_settings {
26        self.ptr.as_ptr()
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    #[test]
35    fn fetchers_settings_new() {
36        let _ = FetchersSettings::new().unwrap();
37    }
38}