Add from_library for generated dynamic library structs (#2011)

This commit is contained in:
Wang, Chi 2021-03-23 03:04:59 +08:00 committed by GitHub
parent 2a46e29242
commit 5a055fde1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 22 deletions

View File

@ -90,14 +90,20 @@ impl DynamicItems {
path: P
) -> Result<Self, ::libloading::Error>
where P: AsRef<::std::ffi::OsStr> {
let __library = ::libloading::Library::new(path)?;
let library = ::libloading::Library::new(path)?;
Ok(Self::from_library(library))
}
pub unsafe fn from_library<L>(
library: L
) -> Self
where L: Into<::libloading::Library> {
let __library = library.into();
#( #constructor_inits )*
Ok(
#lib_ident {
__library,
#( #init_fields ),*
}
)
#lib_ident {
__library,
#( #init_fields ),*
}
}
#( #struct_implementation )*

View File

@ -31,16 +31,23 @@ impl TestLib {
where
P: AsRef<::std::ffi::OsStr>,
{
let __library = ::libloading::Library::new(path)?;
let library = ::libloading::Library::new(path)?;
Ok(Self::from_library(library))
}
pub unsafe fn from_library<L>(library: L) -> Self
where
L: Into<::libloading::Library>,
{
let __library = library.into();
let foo = __library.get(b"foo\0").map(|sym| *sym);
let bar = __library.get(b"bar\0").map(|sym| *sym);
let baz = __library.get(b"baz\0").map(|sym| *sym);
Ok(TestLib {
TestLib {
__library,
foo,
bar,
baz,
})
}
}
pub unsafe fn foo(
&self,

View File

@ -19,14 +19,21 @@ impl TestLib {
where
P: AsRef<::std::ffi::OsStr>,
{
let __library = ::libloading::Library::new(path)?;
let library = ::libloading::Library::new(path)?;
Ok(Self::from_library(library))
}
pub unsafe fn from_library<L>(library: L) -> Self
where
L: Into<::libloading::Library>,
{
let __library = library.into();
let foo = __library.get(b"foo\0").map(|sym| *sym);
let foo1 = __library.get(b"foo1\0").map(|sym| *sym);
Ok(TestLib {
TestLib {
__library,
foo,
foo1,
})
}
}
pub unsafe fn foo(
&self,

View File

@ -33,16 +33,23 @@ impl TestLib {
where
P: AsRef<::std::ffi::OsStr>,
{
let __library = ::libloading::Library::new(path)?;
let library = ::libloading::Library::new(path)?;
Ok(Self::from_library(library))
}
pub unsafe fn from_library<L>(library: L) -> Self
where
L: Into<::libloading::Library>,
{
let __library = library.into();
let foo = __library.get(b"foo\0").map(|sym| *sym);
let baz = __library.get(b"baz\0").map(|sym| *sym);
let bazz = __library.get(b"bazz\0").map(|sym| *sym);
Ok(TestLib {
TestLib {
__library,
foo,
baz,
bazz,
})
}
}
pub unsafe fn foo(
&self,

View File

@ -77,14 +77,21 @@ impl TestLib {
where
P: AsRef<::std::ffi::OsStr>,
{
let __library = ::libloading::Library::new(path)?;
let library = ::libloading::Library::new(path)?;
Ok(Self::from_library(library))
}
pub unsafe fn from_library<L>(library: L) -> Self
where
L: Into<::libloading::Library>,
{
let __library = library.into();
let foo = __library.get(b"foo\0").map(|sym| *sym);
let bar = __library.get(b"bar\0").map(|sym| *sym);
Ok(TestLib {
TestLib {
__library,
foo,
bar,
})
}
}
pub unsafe fn foo(
&self,

View File

@ -72,14 +72,21 @@ impl TestLib {
where
P: AsRef<::std::ffi::OsStr>,
{
let __library = ::libloading::Library::new(path)?;
let library = ::libloading::Library::new(path)?;
Ok(Self::from_library(library))
}
pub unsafe fn from_library<L>(library: L) -> Self
where
L: Into<::libloading::Library>,
{
let __library = library.into();
let foo = __library.get(b"foo\0").map(|sym| *sym);
let bar = __library.get(b"bar\0").map(|sym| *sym);
Ok(TestLib {
TestLib {
__library,
foo,
bar,
})
}
}
pub unsafe fn foo(
&self,