[−][src]Struct jni_glue::VM
FFI: Use &VM instead of *const JavaVM. This represents a global, process-wide Java exection environment.
On Android, there is only one VM per-process, although on desktop it's possible (if rare) to have multiple VMs within the same process. While this library does not yet support having multiple VMs active simultaniously, please don't hesitate to file an issue if this is an important use case for you.
This is a "safe" alternative to jni_sys::JavaVM raw pointers, with the following caveats:
-
A null vm will result in undefined behavior. Java should not be invoking your native functions with a null *mut JavaVM, however, so I don't believe this is a problem in practice unless you've bindgened the C header definitions elsewhere, calling them (requiring
unsafe
), and passing null pointers (generally UB for JNI functions anyways, so can be seen as a caller soundness issue.) -
Allowing the underlying JavaVM to be modified is undefined behavior. I don't believe the JNI libraries modify the JavaVM, so as long as you're not accepting a *mut JavaVM elsewhere, using unsafe to dereference it, and mucking with the methods on it yourself, I believe this "should" be fine.
Methods
impl VM
[src]
pub fn as_java_vm(&self) -> *const JavaVM
[src]
pub unsafe fn from_jni_local(vm: &JavaVM) -> &VM
[src]
pub fn with_env<F, R>(&self, callback: F) -> R where
F: FnOnce(&Env) -> R,
[src]
F: FnOnce(&Env) -> R,
Trait Implementations
Auto Trait Implementations
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,
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.
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>,