pub struct AsyncJulia<R> { /* private fields */ }
Expand description

A handle to the async runtime.

This handle can be used to include files and send new tasks to the runtime. The runtime shuts down when the last handle is dropped and all active tasks have completed.

Implementations§

source§

impl<R> AsyncJulia<R>
where R: AsyncRuntime,

source

pub fn resize_queue<'own>( &'own self, capacity: usize ) -> Option<impl 'own + Future<Output = ()>>

Resize the task queue.

No tasks are dropped if the queue is shrunk. This method return a future that doesn´t resolve until the queue can be resized without dropping any tasks.

source

pub async fn resize_queue_async(&self, capacity: usize) -> Option<()>

Resize the task queue.

See AsyncJulia::resize_queue for more info, the only difference is that this is an async method.

source

pub fn resize_main_queue<'own>( &'own self, capacity: usize ) -> impl 'own + Future<Output = ()>

Resize the task queue of the main runtime thread.

No tasks are dropped if the queue is shrunk. This method return a future that doesn´t resolve until the queue can be resized without dropping any tasks.

source

pub async fn resize_main_queue_async(&self, capacity: usize)

Resize the task queue of the main runtime thread.

See AsyncJulia::resize_main_queue for more info, the only difference is that this is an async method.

source

pub fn resize_worker_queue<'own>( &'own self, capacity: usize ) -> Option<impl 'own + Future<Output = ()>>

Resize the task queue of the worker threads.

No tasks are dropped if the queue is shrunk. This method return a future that doesn´t resolve until the queue can be resized without dropping any tasks.

source

pub async fn resize_worker_queue_async(&self, capacity: usize) -> Option<()>

Resize the task queue of the worker threads.

See AsyncJulia::resize_main_queue for more info, the only difference is that this is an async method.

source

pub fn task<A, O>(&self, task: A, res_sender: O) -> Dispatch<'_, A::Affinity>

Send a new async task to the runtime.

This method waits if there’s no room in the channel. It takes two arguments, the task and the sending half of a channel which is used to send the result back after the task has completed.

source

pub fn register_task<A, O>(&self, res_sender: O) -> Dispatch<'_, A::Affinity>

Register an async task.

This method waits if there’s no room in the channel. It takes one argument, the sending half of a channel which is used to send the result back after the registration has completed.

source

pub fn blocking_task<T, O, F>( &self, task: F, res_sender: O ) -> Dispatch<'_, DispatchAny>
where for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>, O: OneshotSender<JlrsResult<T>>, T: Send + 'static,

Send a new blocking task to the runtime.

This method waits if there’s no room in the channel. It takes two arguments, the first is a closure that takes a GcFrame and must return a JlrsResult whose inner type implements Send. The second is the sending half of a channel which is used to send the result back after the task has completed. This task is executed as soon as possible and can’t call async methods, so it blocks the runtime.

source

pub fn blocking_task_with_affinity<A, T, O, F>( &self, task: F, res_sender: O ) -> Dispatch<'_, A>
where A: Affinity, for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>, O: OneshotSender<JlrsResult<T>>, T: Send + 'static,

Send a new blocking task to the runtime.

This method waits if there’s no room in the channel. It takes two arguments, the first is a closure that takes a GcFrame and must return a JlrsResult whose inner type implements Send. The second is the sending half of a channel which is used to send the result back after the task has completed. This task is executed as soon as possible and can’t call async methods, so it blocks the runtime.

source

pub fn post_blocking_task<T, O, F>( &self, task: F, res_sender: O ) -> Dispatch<'_, DispatchAny>
where for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>, O: OneshotSender<JlrsResult<T>>, T: Send + 'static,

Send a new blocking task to the runtime and schedule it on another thread.

This method waits if there’s no room in the channel. It takes two arguments, the first is a closure that takes a GcFrame and must return a JlrsResult whose inner type implements Send. The second is the sending half of a channel which is used to send the result back after the task has completed. This task not called directly, but executed in a spawned task.

source

pub fn persistent<C, P, O>( &self, task: P, handle_sender: O ) -> Dispatch<'_, P::Affinity>

Send a new persistent task to the runtime.

This method waits if there’s no room in the channel. It takes a two arguments, the task and a OneshotSender to send a PersistentHandle after the task’s init method has completed. You must also provide an implementation of Channel as a type parameter. This channel is used by the handle to communicate with the persistent task.

source

pub fn register_persistent<P, O>( &self, res_sender: O ) -> Dispatch<'_, P::Affinity>

Register a persistent task.

This method waits if there’s no room in the channel. It takes one argument, the sending half of a channel which is used to send the result back after the registration has completed.

source

pub unsafe fn include<P, O>( &self, path: P, res_sender: O ) -> JlrsResult<Dispatch<'_, DispatchMain>>

Include a Julia file by calling Main.include as a blocking task.

This method waits if there’s no room in the channel. It takes two arguments, the path to the file and the sending half of a channel which is used to send the result back after the file has been included.

Safety: this method evaluates the contents of the file if it exists, which can’t be checked for correctness.

source

pub fn error_color<O>( &self, enable: bool, res_sender: O ) -> Dispatch<'_, DispatchMain>

Enable or disable colored error messages originating from Julia as a blocking task.

This method waits if there’s no room in the channel. It takes two arguments, a bool to enable or disable colored error messages and the sending half of a channel which is used to send the result back after the option is set.

This feature is disabled by default.

Auto Trait Implementations§

§

impl<R> !RefUnwindSafe for AsyncJulia<R>

§

impl<R> Send for AsyncJulia<R>
where R: Send,

§

impl<R> Sync for AsyncJulia<R>
where R: Sync,

§

impl<R> Unpin for AsyncJulia<R>
where R: Unpin,

§

impl<R> !UnwindSafe for AsyncJulia<R>

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> AttachParachute for T
where T: 'static + Send + Sync,

source§

fn attach_parachute<'scope, T: Target<'scope>>( self, target: T ) -> WithParachute<'scope, Self>

Attach a parachute to this data. 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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

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

§

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>,

§

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more