rsmount 0.2.2

Safe Rust wrapper around the `util-linux/libmount` C library
Documentation
// Copyright (c) 2023 Nick Piaddo
// SPDX-License-Identifier: Apache-2.0 OR MIT

// From dependency library

// From standard library
use std::marker::PhantomData;

// From this library
use crate::mount::Mount;

/// A mount namespace.
#[derive(Debug)]
#[repr(transparent)]
pub struct MountNamespace<'mount> {
    #[allow(dead_code)]
    pub(crate) ptr: *mut libmount::libmnt_ns,
    _marker: PhantomData<&'mount Mount>,
}

impl<'mount> MountNamespace<'mount> {
    #[doc(hidden)]
    /// Wraps a raw `libmount::mnt_ns` pointer with a safe `MountNamespace`.
    #[allow(dead_code)]
    pub(crate) fn from_raw_parts(
        ptr: *mut libmount::libmnt_ns,
        _: &Mount,
    ) -> MountNamespace<'mount> {
        Self {
            ptr,
            _marker: PhantomData,
        }
    }
}