pub struct SystemWorld { /* private fields */ }Expand description
A world that provides access to the operating system.
This struct is cheap to create because all expensive resources (fonts, packages, library, file cache) are globally shared.
§Thread Safety
SystemWorld is Send + Sync because all mutable state is behind
thread-safe locks in global statics.
§Custom Inputs
By default, SystemWorld uses the global shared library (no sys.inputs).
To provide custom inputs, use SystemWorld::with_inputs:
let world = SystemWorld::new(path, root)
.with_inputs([("title", "Hello"), ("author", "Alice")]);Implementations§
Source§impl SystemWorld
impl SystemWorld
Sourcepub fn new(entry_file: &Path, root_dir: &Path) -> Self
pub fn new(entry_file: &Path, root_dir: &Path) -> Self
Create a new world for compiling a specific file.
This is cheap because fonts/packages/library/file-cache are globally shared. No per-instance allocation is needed.
§Arguments
entry_file- Path to the.typfile to compileroot_dir- Project root directory for resolving imports
§Returns
A new SystemWorld ready for compilation.
Sourcepub fn with_inputs<I, K, V>(self, inputs: I) -> Self
pub fn with_inputs<I, K, V>(self, inputs: I) -> Self
Configure sys.inputs for the compilation.
This creates a custom library with the specified inputs accessible
via sys.inputs in Typst documents.
§Arguments
inputs- Key-value pairs to make available assys.inputs
§Example
use typst_batch::world::SystemWorld;
use std::path::Path;
let world = SystemWorld::new(Path::new("doc.typ"), Path::new("."))
.with_inputs([("title", "Hello"), ("author", "Alice")]);In your Typst document:
#let title = sys.inputs.at("title", default: "Untitled")
= #title§Performance Note
Using this method creates a new library instance, bypassing the global
shared library. For batch compilation without inputs, use SystemWorld::new.
Sourcepub fn with_inputs_dict(self, inputs: Dict) -> Self
pub fn with_inputs_dict(self, inputs: Dict) -> Self
Configure sys.inputs from a pre-built Dict.
This is useful when you already have a Dict of inputs.
§Example
use typst::foundations::{Dict, IntoValue};
let mut inputs = Dict::new();
inputs.insert("version".into(), "1.0".into_value());
let world = SystemWorld::new(path, root).with_inputs_dict(inputs);Sourcepub fn with_library(self, library: LazyHash<Library>) -> Self
pub fn with_library(self, library: LazyHash<Library>) -> Self
Configure a custom library for the compilation.
Use this for full control over the library configuration.
Create a custom library with crate::library::create_library_with_inputs.
Sourcepub fn source_with_virtual<V: VirtualFileSystem>(
&self,
id: FileId,
virtual_fs: &V,
) -> FileResult<Source>
pub fn source_with_virtual<V: VirtualFileSystem>( &self, id: FileId, virtual_fs: &V, ) -> FileResult<Source>
Load source with virtual file system support.
Sourcepub fn file_with_virtual<V: VirtualFileSystem>(
&self,
id: FileId,
virtual_fs: &V,
) -> FileResult<Bytes>
pub fn file_with_virtual<V: VirtualFileSystem>( &self, id: FileId, virtual_fs: &V, ) -> FileResult<Bytes>
Load file with virtual file system support.
Trait Implementations§
Source§impl World for SystemWorld
Implementation of Typst’s World trait.
impl World for SystemWorld
Implementation of Typst’s World trait.
This trait provides the compilation environment:
- Standard library access
- Font discovery
- File system access
- Package management (via file resolution)
- Current date/time
Source§fn library(&self) -> &LazyHash<Library>
fn library(&self) -> &LazyHash<Library>
Returns the standard library.
Returns either the global shared library or a custom library
with sys.inputs if configured via SystemWorld::with_inputs.
Source§fn book(&self) -> &LazyHash<FontBook>
fn book(&self) -> &LazyHash<FontBook>
Returns the font book for font lookup.
The font book indexes all available fonts for name-based lookup.
Source§fn main(&self) -> FileId
fn main(&self) -> FileId
Returns the main source file ID.
This is the entry point for compilation.
Source§fn source(&self, id: FileId) -> FileResult<Source>
fn source(&self, id: FileId) -> FileResult<Source>
Load a source file by ID.
Returns the parsed source code, using the file slot cache for incremental compilation.
Uses the global virtual data provider registered via
[crate::file::set_virtual_provider].
Source§fn file(&self, id: FileId) -> FileResult<Bytes>
fn file(&self, id: FileId) -> FileResult<Bytes>
Load a file’s raw bytes by ID.
Used for binary files (images, etc.) that don’t need parsing.
Uses the global virtual data provider registered via
[crate::file::set_virtual_provider].
Auto Trait Implementations§
impl !Freeze for SystemWorld
impl !RefUnwindSafe for SystemWorld
impl Send for SystemWorld
impl Sync for SystemWorld
impl Unpin for SystemWorld
impl !UnwindSafe for SystemWorld
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more