Struct Isolate

Source
pub struct Isolate { /* private fields */ }
Expand description

Simple wrapper around the Dart Isolate Port, nothing else.

Implementations§

Source§

impl Isolate

Source

pub const fn new(port: i64) -> Self

Create a new Isolate with a port obtained from Dart VM side.

§Example

this a non realistic example lol :D

let isolate = Isolate::new(42);
Source

pub fn post(&self, msg: impl IntoDart) -> bool

Post an object to the Isolate over the port Object must implement IntoDart.

returns true if the message posted successfully, otherwise false

§Safety

This assumes that you called store_dart_post_cobject and we have access to the Dart_PostCObject function pointer also, we do check if it is not null.

§Example
let isolate = Isolate::new(42);
isolate.post("Hello Dart !");
Source

pub async fn task<T, R>(self, t: T) -> bool
where T: Future<Output = R> + Send + 'static, R: Send + IntoDart + 'static,

Consumes Self, Runs the task, await for the result and then post it to the Isolate over the port Result must implement IntoDart.

returns true if the message posted successfully, otherwise false

§Safety

This assumes that you called store_dart_post_cobject and we have access to the Dart_PostCObject function pointer also, we do check if it is not null.

§Example
use async_std::task;
let isolate = Isolate::new(42);
task::spawn(isolate.task(async { 1 + 2 }));
Source

pub async fn catch_unwind<T, R>(self, t: T) -> Result<bool, Box<dyn Any + Send>>
where T: Future<Output = R> + Send + 'static, R: Send + IntoDart + 'static,

Similar to Isolate::task but with more logic to catch any panic and report it back

Trait Implementations§

Source§

impl Clone for Isolate

Source§

fn clone(&self) -> Isolate

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Isolate

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for Isolate

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.