1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use crate::{Alpm, LoadedPackage, Package, Result}; use alpm_sys::*; pub unsafe trait PkgAdd { fn as_alpm_pkg_t(&self) -> *mut alpm_pkg_t; } unsafe impl<'a> PkgAdd for Package<'a> { fn as_alpm_pkg_t(&self) -> *mut alpm_pkg_t { self.pkg } } unsafe impl<'a> PkgAdd for LoadedPackage<'a> { fn as_alpm_pkg_t(&self) -> *mut alpm_pkg_t { self.pkg.pkg } } impl Alpm { pub fn trans_add_pkg(&self, pkg: Package) -> Result<()> { let ret = unsafe { alpm_add_pkg(self.handle, pkg.pkg) }; let ok = self.check_ret(ret); if ok.is_ok() { std::mem::forget(pkg); } ok } }