Lines Matching defs:Symbol
126 /// # use ::libloading::{Library, Symbol};
131 /// let awesome_function: Symbol<unsafe extern fn(f64) -> f64> =
140 /// # use ::libloading::{Library, Symbol};
143 /// let awesome_variable: Symbol<*mut f64> = lib.get(b"awesome_variable\0").unwrap();
147 pub unsafe fn get<'lib, T>(&'lib self, symbol: &[u8]) -> Result<Symbol<'lib, T>, Error> {
148 self.0.get(symbol).map(|from| Symbol::from_raw(from, self))
187 /// Symbol from a library.
190 /// unloaded. The primary method to create an instance of a `Symbol` is via [`Library::get`].
192 /// The `Deref` trait implementation allows the use of `Symbol` as if it was a function or variable
197 pub struct Symbol<'lib, T: 'lib> {
198 inner: imp::Symbol<T>,
202 impl<'lib, T> Symbol<'lib, T> {
203 /// Extract the wrapped `os::platform::Symbol`.
208 /// ensure the resulting `Symbol` is not used past the lifetime of the `Library` this symbol
214 /// # use ::libloading::{Library, Symbol};
217 /// let symbol: Symbol<*mut u32> = lib.get(b"symbol\0").unwrap();
221 pub unsafe fn into_raw(self) -> imp::Symbol<T> {
225 /// Wrap the `os::platform::Symbol` into this safe wrapper.
237 /// # use ::libloading::{Library, Symbol};
240 /// let symbol: Symbol<*mut u32> = lib.get(b"symbol\0").unwrap();
242 /// let symbol = Symbol::from_raw(symbol, &lib);
245 pub unsafe fn from_raw<L>(sym: imp::Symbol<T>, library: &'lib L) -> Symbol<'lib, T> {
247 Symbol {
254 impl<'lib, T> Symbol<'lib, Option<T>> {
260 /// # use ::libloading::{Library, Symbol};
263 /// let symbol: Symbol<Option<*mut u32>> = lib.get(b"symbol\0").unwrap();
264 /// let symbol: Symbol<*mut u32> = symbol.lift_option().expect("static is not null");
267 pub fn lift_option(self) -> Option<Symbol<'lib, T>> {
268 self.inner.lift_option().map(|is| Symbol {
275 impl<'lib, T> Clone for Symbol<'lib, T> {
276 fn clone(&self) -> Symbol<'lib, T> {
277 Symbol {
285 impl<'lib, T> ops::Deref for Symbol<'lib, T> {
292 impl<'lib, T> fmt::Debug for Symbol<'lib, T> {
298 unsafe impl<'lib, T: Send> Send for Symbol<'lib, T> {}
299 unsafe impl<'lib, T: Sync> Sync for Symbol<'lib, T> {}