[]Struct dart::dart_handle::UnverifiedDartHandle

#[repr(transparent)]pub struct UnverifiedDartHandle { /* fields omitted */ }

A smart wrapper around a Dart_Handle.

Safety

  • This does not dispose of handles upon being dropped.
  • This is Copy and Clone and therefore does not make any reassurances to how many places code could be touching the value since it is possible to construct it again from a clone of this value.
  • This is not Send nor Sync and therefore its use in this library makes the assumption that a UnverifiedDartHandle will never cause a data race on another thread, unless specifically coordinated by another thread using unsafe.
  • This does not keep track of dart scopes, and may be destroyed after the end of the current scope. This is also why the respective enter_scope and exit_scope functions are marked as unsafe, since they could easily invalidate Dart_Handles. The existence of UnverifiedDartHandles after the end of the function call is also prevented by the lack of a Send and Sync implementation, which makes it impossible to communicate handles between function entries, barring the use of unsafe with precise coordination to ensure that the handle is not invalidated.
  • Creating an UnverifiedDartHandle with garbage data is UB. This may cause the VM to try to dereference it and therefore invoke undefined behaviour and potentially crash the program in unexpected ways. Generally the only way to ensure that a handle is valid is to only use ones handed to you by the VM directly, and to never create one on your own.

Note

The documentation on these functions is sparse. The functions listed for this struct are direct safe wrappers around what is available under the extensions api in dart_sys.

I (The author of the crate) will try to document functions that may be unclear or ambiguous from the name, but will otherwise leave it to the reader's discretion to determine the use of each function.

Methods

impl UnverifiedDartHandle[src]

pub unsafe fn new(handle: Dart_Handle) -> Self[src]

Creates a new UnverifiedDartHandle from a raw Dart_Handle.

Safety

Calling this function must ensure that all of the invariants listed in the description for UnverifiedDartHandle are upheld and that the contracts listed there are never violated.

Breaking the contract defined above this function, in the related function could cause the VM to invoke UB.

pub fn get_error(self) -> Result<Self, Error>[src]

Checks if this handle is an Error handle, returning a smart wrapper around the error handle should it be one, or returning itself should it not be an error.

pub fn to_string(&self) -> Result<CString, Error>[src]

Calls Object.toString() on an object and returns a CString should it succeed, or

pub fn identity_eq(a: Self, b: Self) -> bool[src]

Checks if two handles refer to the same object.

This may call dart:core.identical, and further reading is available at Dart_IdentityEquals.

pub unsafe fn handle_message() -> Result<Self, Error>[src]

pub unsafe fn wait_for_event(timeout_millis: i64) -> Result<Self, Error>[src]

pub fn null() -> Self[src]

Returns a handle to the Null object.

See Dart_Null for more information.

pub fn is_null(&self) -> bool[src]

Checks if a handle is to the Null object.

See Dart_IsNull for more information.

pub fn empty_string() -> Self[src]

Returns a handle to the empty string object.

See Dart_EmptyString for more information.

pub fn equals(&self, other: Self) -> Result<bool, Error>[src]

Checks equality. Not too sure what this does different from identical.

See Dart_ObjectEquals for more information.

pub fn instanceof(&self, ty: Self) -> Result<bool, Error>[src]

Is self instanceof ty? ty must be a Type.

See Dart_ObjectIsType for more information.

pub fn is_instance(&self) -> bool[src]

Is self an instance of an object?

See Dart_IsInstance for more information.

pub fn is_integer(&self) -> bool[src]

pub fn is_double(&self) -> bool[src]

pub fn is_boolean(&self) -> bool[src]

pub fn is_string(&self) -> bool[src]

pub fn is_string_latin1(&self) -> bool[src]

pub fn is_external_string(&self) -> bool[src]

pub fn is_list(&self) -> bool[src]

pub fn is_map(&self) -> bool[src]

pub fn is_library(&self) -> bool[src]

pub fn is_type(&self) -> bool[src]

pub fn is_function(&self) -> bool[src]

pub fn is_variable(&self) -> bool[src]

pub fn is_type_variable(&self) -> bool[src]

Is self the type variable in a generic function or type?

This example is not tested
void Foo<T>() {}
         ^-- Type variable

pub fn is_closure(&self) -> bool[src]

pub fn is_typed_data(&self) -> bool[src]

pub fn is_byte_buffer(&self) -> bool[src]

pub fn is_future(&self) -> bool[src]

pub fn get_instance_type(&self) -> Result<Self, Error>[src]

pub fn get_class_name(&self) -> Result<Self, Error>[src]

pub fn get_function_name(&self) -> Result<Self, Error>[src]

pub fn get_function_owner(&self) -> Result<Self, Error>[src]

pub fn function_is_static(&self) -> Result<bool, Error>[src]

pub fn is_tear_off(&self) -> bool[src]

A tear off is when you create an implicit closure which calls a single function on an object:

This example is not tested
var someList = <String>[];
var anotherList = ['a', 'b', 'c'];
anotherList.forEach(someList.add); //Tearing off here gives me
                                   //a void Function(String).

pub fn function_from_closure(&self) -> Result<Self, Error>[src]

pub fn library_from_class(&self) -> Result<Self, Error>[src]

pub fn integer_fits_in_i64(&self) -> Result<bool, Error>[src]

pub fn integer_fits_in_u64(&self) -> Result<bool, Error>[src]

pub fn new_i64(x: i64) -> Self[src]

pub fn new_u64(x: u64) -> Self[src]

pub fn parse_hex_int(num: &CStr) -> Result<Self, Error>[src]

pub fn get_i64(&self) -> Result<i64, Error>[src]

pub fn get_u64(&self) -> Result<u64, Error>[src]

pub fn get_integer_hex_string(&self) -> Result<CString, Error>[src]

pub fn new_f64(x: f64) -> Self[src]

pub fn get_f64(&self) -> Result<f64, Error>[src]

pub fn get_static_method_closure(
    library: Self,
    clazz: Self,
    function_name: Self
) -> Result<Self, Error>
[src]

Gets a top level method from a class.

See Dart_GetStaticMethodClosure for more information.

pub fn const_true() -> Self[src]

pub fn const_false() -> Self[src]

pub fn new_bool(x: bool) -> Self[src]

pub fn get_bool(&self) -> Result<bool, Error>[src]

pub fn string_length(&self) -> Result<usize, Error>[src]

pub fn string_from_cstr(string: &CStr) -> Self[src]

pub fn string_from_str(string: &str) -> Self[src]

pub fn string_from_utf8(string: &[u8]) -> Result<Self, Error>[src]

pub fn string_from_utf16(utf16: &[u16]) -> Result<Self, Error>[src]

pub fn string_from_utf32(utf32: &[i32]) -> Result<Self, Error>[src]

pub fn string_to_cstring(&self) -> Result<CString, Error>[src]

pub fn string_to_utf8(&self) -> Result<String, Error>[src]

pub fn string_storage_size(&self) -> Result<usize, Error>[src]

pub fn new_list(length: usize) -> Result<Self, Error>[src]

New list of dynamics.

See Dart_NewList for more information.

pub fn new_list_of(length: usize, ty: Dart_CoreType_Id) -> Result<Self, Error>[src]

New list of one of the core types:

  • Dynamic
  • String
  • Int

See Dart_NewListOf and Dart_CoreType_Id for more information.

pub fn new_list_of_self_as_type(&self, length: usize) -> Result<Self, Error>[src]

pub fn list_length(&self) -> Result<usize, Error>[src]

pub fn list_at(&self, index: usize) -> Result<Self, Error>[src]

pub fn list_get_range(
    &self,
    range: impl RangeBounds<usize>
) -> Result<Self, Error>
[src]

pub fn list_set_at(&self, item: Self, index: usize) -> Result<(), Error>[src]

pub fn map_get_at(&self, key: Self) -> Result<Option<Self>, Error>[src]

pub fn map_contains_key(&self, key: Self) -> Result<Self, Error>[src]

pub fn map_keys(&self) -> Result<Self, Error>[src]

pub fn typed_data_get_type(&self) -> Dart_TypedData_Type[src]

pub fn external_typed_data_get_type(&self) -> Dart_TypedData_Type[src]

pub fn new_typed_data(
    ty: Dart_TypedData_Type,
    len: usize
) -> Result<Self, Error>
[src]

pub unsafe fn new_external_typed_data<T: TypedData>(
    values: *mut [T]
) -> Result<Self, Error>
[src]

pub fn new_external_typed_data_with_drop<T: TypedData, V: Into<Box<[T]>>>(
    values: V
) -> Result<Self, Error>
[src]

pub fn new_of_type_self(
    &self,
    constructor_name: Option<Self>,
    args: &mut [Self]
) -> Result<Self, Error>
[src]

pub fn allocate_of_type_self(&self) -> Result<Self, Error>[src]

pub fn invoke(
    &self,
    function_name: Self,
    args: &mut [Self]
) -> Result<Self, Error>
[src]

Invokes a method on self, where self may be a:

  • Instance: Invokes a member method.
  • Class: Invokes a static method.
  • Library: Invokes a static top level method.

See Dart_Invoke for more information.

pub fn invoke_closure(&self, args: &mut [Self]) -> Result<Self, Error>[src]

pub fn invoke_self_constructor(
    &self,
    name: Option<Self>,
    args: &mut [Self]
) -> Result<Self, Error>
[src]

Invokes the constructor on a type, using the default constructor if name is None.

See Dart_InvokeConstructor for more information.

pub fn get_field(&self, name: Self) -> Result<Self, Error>[src]

pub fn set_field(&self, name: Self, value: Self) -> Result<(), Error>[src]

pub fn make_type_from_decl(
    library: Self,
    class_name: Self,
    type_args: &mut [Self]
) -> Result<Self, Error>
[src]

Constructs a type instance which is located within library, is called class and has the type parameters type_args.

Example: library: dart:core, class_name: List, type_args: String would give a List<String>.

pub fn get_class_of_library(library: Self, name: Self) -> Result<Self, Error>[src]

pub fn get_library_url_import(&self) -> Result<Self, Error>[src]

pub fn get_library_url_path(&self) -> Result<Self, Error>[src]

pub fn get_loaded_libraries(&self) -> Result<Self, Error>[src]

pub fn op_add(&self, other: Self) -> Result<Self, Error>[src]

Invokes an operator for an instance. These methods are shorthand instead of directly using invoke. These methods will just use the operator as the name of the method (+ for add, - for sub, etc.).

  • op_add: Addition (+).
  • op_sub: Subtraction (-).
  • op_mul: Multiplication (*).
  • op_div: Double Division (/).
  • op_rem: Remainder Division (%).
  • op_flr_div: Integer Division (~/).
  • op_neg: Unary Negation (-, unary-).
  • op_eq: Test for overloadable equality (==).
  • op_gt, op_gte, op_lt, op_lte: Comparison (>, >=, <, <=).
  • op_bitand: Binary and-ing (&).
  • op_bitor: Binary or-ing (|).
  • op_bitxor: Binary xor-ing (^).
  • op_bit_not: Binary not-ing (~).
  • op_shl: Binary left shift bits (<<).
  • op_shr: Binary right shift bits (>>).
  • op_idx: Indexing ([]).
  • op_idx_assign: Assignment to index ([]=).

pub fn op_sub(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_mul(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_div(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_rem(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_flr_div(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_neg(&self) -> Result<Self, Error>[src]

pub fn op_eq(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_gt(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_gte(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_lt(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_lte(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_bitand(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_bitor(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_bitxor(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_bit_not(&self) -> Result<Self, Error>[src]

pub fn op_shl(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_shr(&self, other: Self) -> Result<Self, Error>[src]

pub fn op_idx(&self, idx: Self) -> Result<Self, Error>[src]

pub fn op_idx_assign(&self, idx: Self, value: Self) -> Result<(), Error>[src]

Trait Implementations

impl<'_> Add<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the + operator.

impl<'_, '_> Add<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the + operator.

impl Add<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the + operator.

impl<'_> Add<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the + operator.

impl<'_> AddAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl AddAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> BitAnd<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the & operator.

impl<'_, '_> BitAnd<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the & operator.

impl BitAnd<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the & operator.

impl<'_> BitAnd<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the & operator.

impl<'_> BitAndAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl BitAndAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> BitOr<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the | operator.

impl<'_, '_> BitOr<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the | operator.

impl BitOr<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the | operator.

impl<'_> BitOr<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the | operator.

impl<'_> BitOrAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl BitOrAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> BitXor<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the ^ operator.

impl<'_, '_> BitXor<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the ^ operator.

impl BitXor<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the ^ operator.

impl<'_> BitXor<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the ^ operator.

impl<'_> BitXorAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl BitXorAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl Clone for UnverifiedDartHandle[src]

impl Copy for UnverifiedDartHandle[src]

impl DartHandle for UnverifiedDartHandle[src]

impl Debug for UnverifiedDartHandle[src]

impl Deref for UnverifiedDartHandle[src]

type Target = Dart_Handle

The resulting type after dereferencing.

impl<'_> Div<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the / operator.

impl<'_, '_> Div<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the / operator.

impl Div<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the / operator.

impl<'_> Div<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the / operator.

impl<'_> DivAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl DivAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl ListLike<UnverifiedDartHandle> for List<UnverifiedDartHandle>

impl<'_> Mul<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the * operator.

impl<'_, '_> Mul<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the * operator.

impl Mul<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the * operator.

impl<'_> Mul<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the * operator.

impl<'_> MulAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl MulAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl Neg for UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the - operator.

impl<'_> Neg for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the - operator.

impl Not for UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the ! operator.

impl<'_> Not for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the ! operator.

impl PartialEq<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> Rem<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the % operator.

impl<'_, '_> Rem<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the % operator.

impl Rem<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the % operator.

impl<'_> Rem<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the % operator.

impl<'_> RemAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl RemAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> Shl<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the << operator.

impl<'_, '_> Shl<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the << operator.

impl Shl<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the << operator.

impl<'_> Shl<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the << operator.

impl<'_> ShlAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl ShlAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> Shr<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the >> operator.

impl<'_, '_> Shr<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the >> operator.

impl Shr<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the >> operator.

impl<'_> Shr<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the >> operator.

impl<'_> ShrAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl ShrAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl<'_> Sub<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the - operator.

impl<'_, '_> Sub<&'_ UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the - operator.

impl Sub<UnverifiedDartHandle> for UnverifiedDartHandle[src]

type Output = Result<Self, Error>

The resulting type after applying the - operator.

impl<'_> Sub<UnverifiedDartHandle> for &'_ UnverifiedDartHandle[src]

type Output = Result<UnverifiedDartHandle, Error>

The resulting type after applying the - operator.

impl<'_> SubAssign<&'_ UnverifiedDartHandle> for UnverifiedDartHandle[src]

impl SubAssign<UnverifiedDartHandle> for UnverifiedDartHandle[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.