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
30
31
32
33
use std::fs;
use std::path::Path;
use anyhow::Error;
use libloading::Library;
pub struct TempLibrary {
_tmp_path: tempfile::TempPath,
library: Library,
}
impl TempLibrary {
pub fn new(path: &Path) -> Result<Self, Error> {
let tmp_path = tempfile::NamedTempFile::new()?.into_temp_path();
fs::copy(path, &tmp_path)?;
let library = Library::new(&tmp_path)?;
Ok(TempLibrary {
_tmp_path: tmp_path,
library,
})
}
pub fn library(&self) -> &Library {
&self.library
}
}