[][src]Trait jni_glue::JniType

pub unsafe trait JniType {
    fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R;
}

JNI bindings rely on this type being accurate.

unsafe: static_with_jni_type must pass a string terminated by '\0'. Failing to do so is a soundness bug, as the string is passed directly to JNI as a raw pointer! Additionally, passing the wrong type may be a soundness bug as although the Android JVM will simply panic and abort, I've no idea if that's a guarantee or not.

Why the awkward callback style instead of returning &'static str? Arrays of arrays may need to dynamically construct their type strings, which would need to leak. Worse, we can't easily intern those strings via lazy_static without running into:

error[E0401]: can't use generic parameters from outer function

Required methods

fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R

Loading content...

Implementations on Foreign Types

impl JniType for ()[src]

impl JniType for bool[src]

impl JniType for jbyte[src]

impl JniType for jshort[src]

impl JniType for jint[src]

impl JniType for jlong[src]

impl JniType for jfloat[src]

impl JniType for jdouble[src]

impl<'_> JniType for &'_ str[src]

Loading content...

Implementors

impl JniType for BooleanArray[src]

impl JniType for ByteArray[src]

impl JniType for CharArray[src]

impl JniType for DoubleArray[src]

impl JniType for FloatArray[src]

impl JniType for IntArray[src]

impl JniType for LongArray[src]

impl JniType for ShortArray[src]

impl JniType for jchar[src]

impl<T: AsValidJObjectAndEnv, E: ThrowableType> JniType for ObjectArray<T, E>[src]

Loading content...