Struct jni::objects::AutoLocal [−][src]
Auto-delete wrapper for local refs.
Anything passed to a foreign method and returned from JNI methods is considered a local ref unless it is specified otherwise. These refs are automatically deleted once the foreign method exits, but it's possible that they may reach the JVM-imposed limit before that happens.
This wrapper provides automatic local ref deletion when it goes out of scope.
NOTE: This comes with some potential safety risks. DO NOT use this to wrap something unless you're SURE it won't be used after this wrapper gets dropped. Otherwise, you'll get a nasty JVM crash.
See also the JNI specification for details on referencing Java objects and some extra information.
Implementations
impl<'a, 'b> AutoLocal<'a, 'b>
[src]
pub fn new(env: &'b JNIEnv<'a>, obj: JObject<'a>) -> Self
[src]
Creates a new auto-delete wrapper for a local ref.
Once this wrapper goes out of scope, the delete_local_ref
will be
called on the object. While wrapped, the object can be accessed via
the Deref
impl.
pub fn forget(self) -> JObject<'a>
[src]
Forget the wrapper, returning the original object.
This prevents delete_local_ref
from being called when the AutoLocal
gets
dropped. You must either remember to delete the local ref manually, or
be
ok with it getting deleted once the foreign method returns.
pub fn as_obj<'c>(&self) -> JObject<'c> where
'a: 'c,
[src]
'a: 'c,
Get a reference to the wrapped object
Unlike forget
, this ensures the wrapper from being dropped while the
returned JObject
is still live.
Trait Implementations
impl<'a, 'b, 'c> Desc<'a, JClass<'b>> for &'b AutoLocal<'c, '_> where
'c: 'b,
[src]
'c: 'b,
This conversion assumes that the AutoLocal
is a pointer to a class object.
impl<'a, 'b> Drop for AutoLocal<'a, 'b>
[src]
impl<'a> From<&'a AutoLocal<'a, '_>> for JObject<'a>
[src]
Auto Trait Implementations
impl<'a, 'b> RefUnwindSafe for AutoLocal<'a, 'b>
[src]
impl<'a, 'b> !Send for AutoLocal<'a, 'b>
[src]
impl<'a, 'b> !Sync for AutoLocal<'a, 'b>
[src]
impl<'a, 'b> Unpin for AutoLocal<'a, 'b> where
'a: 'b,
[src]
'a: 'b,
impl<'a, 'b> UnwindSafe for AutoLocal<'a, 'b>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,