Struct jlrs::data::managed::module::Module

source ·
#[repr(transparent)]
pub struct Module<'scope>(_, _);
Expand description

Functionality in Julia can be accessed through its module system. You can get a handle to the three standard modules, Main, Base, and Core and access their submodules through them. If you include your own Julia code with Julia::include or AsyncJulia::include, its contents are made available relative to Main.

The most important methods offered are those that let you access submodules, functions, and other global values defined in the module.

Implementations§

source§

impl<'scope> Module<'scope>

source

pub fn name(self) -> Symbol<'scope>

Returns the name of this module.

source

pub fn parent(self) -> Module<'scope>

Returns the parent of this module.

source

pub unsafe fn extend<'target, T>(self, _: &T) -> Module<'target>where T: Target<'target>,

Extend the lifetime of this module. This is safe as long as the module is never redefined.

source

pub fn main<T: Target<'scope>>(_: &T) -> Self

Returns a handle to Julia’s Main-module. If you include your own Julia code with Julia::include or AsyncJulia::include its contents are made available relative to Main.

source

pub fn core<T: Target<'scope>>(_: &T) -> Self

Returns a handle to Julia’s Core-module.

source

pub fn base<T: Target<'scope>>(_: &T) -> Self

Returns a handle to Julia’s Base-module.

source

pub fn is_imported<N: ToSymbol>(self, sym: N) -> bool

Returns true if self has imported sym.

source

pub fn binding_type<'target, N, T>( self, target: T, var: N ) -> Option<ValueData<'target, 'static, T>>where N: ToSymbol, T: Target<'target>,

Returns the type of the binding in this module with the name var,

source

pub fn submodule<'target, N, T>( self, target: T, name: N ) -> JlrsResult<ModuleData<'target, T>>where N: ToSymbol, T: Target<'target>,

Returns the submodule named name relative to this module. You have to visit this level by level: you can’t access Main.A.B by calling this function with "A.B", but have to access A first and then B.

Returns an error if the submodule doesn’t exist.

source

pub fn package_root_module<'target, N: ToSymbol, T: Target<'target>>( target: &T, name: N ) -> Option<Module<'target>>

Returns the root module of the package named name.

All loaded packages can be accessed with this method. If the package doesn’t exist or hasn’t been loaded yet, None is returned.

source

pub unsafe fn set_global<'target, N, T>( self, target: T, name: N, value: Value<'_, 'static> ) -> T::Exception<'static, ()>where N: ToSymbol, T: Target<'target>,

Set a global value in this module. Note that if this global already exists, this can make the old value unreachable. If an excection is thrown, it’s caught, rooted and returned.

Safety: Mutating Julia data is generally unsafe because it can’t be guaranteed mutating this value is allowed.

source

pub unsafe fn set_global_unchecked<N>(self, name: N, value: Value<'_, 'static>)where N: ToSymbol,

Set a global value in this module. Note that if this global already exists, this can make the old value unreachable.

Safety: Mutating Julia data is generally unsafe because it can’t be guaranteed mutating this value is allowed.

source

pub fn set_const<'target, N, T>( self, target: T, name: N, value: Value<'_, 'static> ) -> T::Exception<'static, Value<'scope, 'static>>where N: ToSymbol, T: Target<'target>,

Set a constant in this module. If Julia throws an exception it’s caught and rooted in the current frame, if the exception can’t be rooted a JlrsError::AllocError is returned. If no exception is thrown an unrooted reference to the constant is returned.

source

pub unsafe fn set_const_unchecked<N>( self, name: N, value: Value<'_, 'static> ) -> Value<'scope, 'static>where N: ToSymbol,

Set a constant in this module. If the constant already exists the process aborts, otherwise an unrooted reference to the constant is returned.

Safety: This method must not throw an error if called from a ccalled function.

source

pub fn global<'target, N, T>( self, target: T, name: N ) -> JlrsResult<ValueData<'target, 'static, T>>where N: ToSymbol, T: Target<'target>,

Returns the global named name in this module. Returns an error if the global doesn’t exist.

source

pub fn function<'target, N, T>( self, target: T, name: N ) -> JlrsResult<FunctionData<'target, 'static, T>>where N: ToSymbol, T: Target<'target>,

Returns the function named name in this module. Returns an error if the function doesn’t exist or if it’s not a subtype of Function.

source

pub unsafe fn require<'target, T, N>( self, target: T, module: N ) -> ValueResult<'target, 'static, T>where T: Target<'target>, N: ToSymbol,

Load a module by calling Base.require and return this module if it has been loaded successfully. This method can be used to load parts of the standard library like LinearAlgebra. This requires one slot on the GC stack. Note that the loaded module is not made available in the module used to call this method, you can use Module::set_global to do so.

Note that when you want to call using Submodule in the Main module, you can do so by evaluating the using-statement with Value::eval_string.

Safety: This method can execute arbitrary Julia code depending on the module that is loaded.

Trait Implementations§

source§

impl<'scope> AccessPlotsModule for Module<'scope>

source§

fn plots<'global, T: Target<'global>>(target: &T) -> Module<'global>

Returns the Plots module.
source§

impl<'scope, 'data> AsTyped<'scope, 'data> for Module<'scope>

source§

fn as_typed(self) -> JlrsResult<TypedValue<'scope, 'data, Self>>

source§

impl<'scope> CCallArg for Module<'scope>

§

type CCallArgType = Value<'scope, 'static>

§

type FunctionArgType = Module<'scope>

source§

impl<'scope> Clone for Module<'scope>

source§

fn clone(&self) -> Module<'scope>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl ConstructType for Module<'_>

source§

fn construct_type<'target, 'current, 'borrow, T>( target: ExtendedTarget<'target, '_, '_, T> ) -> ValueData<'target, 'static, T>where T: Target<'target>,

Constructs the type object associated with this type.
source§

fn base_type<'target, Tgt>(_target: &Tgt) -> Option<Value<'target, 'static>>where Tgt: Target<'target>,

Returns the base type object associated with this type. Read more
source§

fn is_compatible<T>(frame: &mut GcFrame<'_>) -> boolwhere T: ValidField,

Returns true if T is a valid field layout for instances of the constructed type.
source§

impl Debug for Module<'_>

source§

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

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

impl<'scope> PartialEq<Module<'scope>> for Module<'scope>

source§

fn eq(&self, other: &Module<'scope>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'target> Typecheck for Module<'target>

source§

fn typecheck(t: DataType<'_>) -> bool

Returns whether the property implied by Self holds true.
source§

impl ValidLayout for Module<'_>

source§

fn valid_layout(ty: Value<'_, '_>) -> bool

Check if the layout of the implementor is compatible with the layout of ty. This argument is a Value to account for the fact that a field type can be a Union, UnionAll or Union{}.
source§

const IS_REF: bool = true

Must be true if the Rust type is a managed type.
source§

impl<'scope> Copy for Module<'scope>

source§

impl<'scope> StructuralPartialEq for Module<'scope>

Auto Trait Implementations§

§

impl<'scope> RefUnwindSafe for Module<'scope>

§

impl<'scope> !Send for Module<'scope>

§

impl<'scope> !Sync for Module<'scope>

§

impl<'scope> Unpin for Module<'scope>

§

impl<'scope> UnwindSafe for Module<'scope>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> CompatibleCast for Twhere T: ValidLayout,

§

type Inner = T

§

type Output = U

source§

fn compatible_cast<U>(&self) -> &<T as CompatibleCast>::Output<U>where T: Compatible<U>,

Converts &Self to &U, &[Self] to &[U], and &[Self; N] to &[U; N].
source§

fn compatible_cast_mut<U>(&mut self) -> &mut <T as CompatibleCast>::Output<U>where T: Compatible<U>,

Converts &mut Self to &mut U, &mut [Self] to &mut [U], and &mut [Self; N] to &mut [U; N].
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere 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.

source§

impl<T, U> Into<U> for Twhere 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<'scope, 'data, W> Managed<'scope, 'data> for Wwhere W: ManagedPriv<'scope, 'data>,

§

type TypeConstructor = <W as ManagedPriv<'scope, 'data>>::TypeConstructorPriv<'target, 'da>

Self, but with arbitrary lifetimes. Used to construct the appropriate type in generic contexts.
source§

fn as_ref(self) -> Ref<'scope, 'data, Self>

Convert the data to a Ref.
source§

fn as_value(self) -> Value<'scope, 'data>

Convert the data to a Value.
source§

fn root<'target, T>( self, target: T ) -> T::Data<'data, Self::TypeConstructor<'target, 'data>>where T: Target<'target>,

Use the target to reroot this data.
source§

fn unrooted_target(self) -> Unrooted<'scope>

Returns a new Unrooted.
source§

fn display_string(self) -> JlrsResult<String>

Convert the data to its display string, i.e. the string that is shown when calling Base.show.
source§

fn error_string(self) -> JlrsResult<String>

Convert the data to its error string, i.e. the string that is shown when calling Base.showerror. This string can contain ANSI color codes if this is enabled by calling Julia::error_color or AsyncJulia::error_color.
source§

fn display_string_or<S: Into<String>>(self, default: S) -> String

Convert the data to its display string, i.e. the string that is shown by calling Base.display, or some default value.
source§

fn error_string_or<S: Into<String>>(self, default: S) -> String

Convert the data to its error string, i.e. the string that is shown when this value is thrown as an exception, or some default value.
source§

fn leak(self) -> Ref<'static, 'data, Self::TypeConstructor<'static, 'data>>

Extends the 'scope lifetime to 'static, which allows this managed data to be leaked from a scope. Read more
§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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 ) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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 ) -> Rwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

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

impl<T> ToOwned for Twhere T: Clone,

§

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
§

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

impl<T> Compatible<T> for Twhere T: ValidLayout,