Skip to main content

Runtime

Struct Runtime 

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

A manifest-driven runtime that executes CRUD operations against an underlying data store. Two backends are supported:

  • SQLite (default): single-process, file-or-memory, with a write mutex + read pool, FTS5 search, and per-row LoroDoc CRDT snapshots.
  • Postgres: live cluster, suitable for multi-replica deployments. Routes entity CRUD through pylon_storage::pg_datastore::PostgresDataStore. CRDT mode and FTS5-shaped search are SQLite-only at this layer; the Postgres backend returns NOT_SUPPORTED for those paths and the router degrades to JSON change events (no binary CRDT broadcasts).

Pick a backend by passing a postgres:// URL to Runtime::open; any other string is treated as a SQLite filesystem path.

Implementations§

Source§

impl Runtime

Source

pub fn open(url: &str, manifest: AppManifest) -> Result<Self, RuntimeError>

Open a runtime against either a SQLite file path or a Postgres URL.

Backend selection is by URL prefix:

  • postgres://... or postgresql://... → Postgres (requires the postgres-live feature on pylon-storage, enabled by default).
  • Anything else → SQLite, treating the string as a filesystem path (":memory:" works via Runtime::in_memory instead).
Source

pub fn open_postgres( url: &str, manifest: AppManifest, ) -> Result<Self, RuntimeError>

Open a runtime backed by a live Postgres cluster.

Schema must be applied separately via pylon migrate / the storage adapter’s plan apply path — Runtime does not auto-create tables on Postgres (in contrast to SQLite, where from_connection runs CREATE TABLE IF NOT EXISTS on every open). This matches how production Postgres deployments are typically managed: schema is migrated via a controlled, observable step, not as a side effect of the server starting up.

Source

pub fn is_in_memory(&self) -> bool

Returns true if this runtime is backed by an in-memory SQLite DB.

Stored at open time rather than queried via conn.path() because the path-based check conflates “no filename” with “in-memory”: Connection::open("") yields a file-backed DB with empty path, and would falsely pass as in-memory. Since we always know at construction time which constructor was used, track the bit.

Gates the test-reset endpoint — a false positive here would let /api/__test__/reset truncate real tables.

Source

pub fn db_path(&self) -> Option<String>

Filesystem path to the SQLite database, if this runtime is file-backed. Returns None for in-memory runtimes AND Postgres runtimes (no local file). Used by the server bootstrap to derive companion paths (session store, change log persistence) without requiring the caller to pass them in.

Source

pub fn reset_for_tests(&self) -> Result<(), RuntimeError>

Drop every row from every entity table. Intended for test harnesses that call /api/__test__/reset between cases; refuses to run on anything but an in-memory database.

Does NOT drop the tables themselves — schema stays, indexes stay, triggers stay. Just truncates user data + the change log.

Source

pub fn in_memory(manifest: AppManifest) -> Result<Self, RuntimeError>

Create an in-memory SQLite-backed runtime (useful for tests and benchmarks). For Postgres-backed equivalents, use open_postgres with a test-cluster URL.

Source

pub fn ensure_search_indexes(&self) -> Result<(), RuntimeError>

Create the search index tables (_facet_bitmap, per-entity _fts_<Entity>, and a covering index for each declared sortable field) for every searchable entity in the manifest.

Production deployments do this via the storage adapter’s apply_schema / migration plan; that path also handles adding/removing the tables when a search: block is added or removed across deploys. This method is a quick path for tests and benchmarks that build a Runtime::in_memory(...) directly without going through the schema-plan pipeline.

Source

pub fn manifest(&self) -> &AppManifest

Return a reference to the app manifest.

Source

pub fn lock_conn_pub(&self) -> Result<MutexGuard<'_, Connection>, RuntimeError>

Expose the write connection mutex for transactional operations. SQLite-only — Postgres mode returns NOT_SQLITE_BACKEND. Callers that need a transaction on Postgres should use [Runtime::transact_ops] (via the DataStore trait), which routes to a real Postgres transaction inside PostgresDataStore.

Source

pub fn read_pool_size(&self) -> usize

Return the number of read connections in the pool. Always 0 for in-memory SQLite (pool is empty by design) and for Postgres mode (the pool concept doesn’t apply — PostgresDataStore manages its own connection internally).

Source

pub fn is_postgres(&self) -> bool

Return true if this runtime is backed by Postgres. Useful for SQLite-only fast-paths to early-exit cleanly.

Source

pub fn crdt_store(&self) -> &LoroStore

Borrow the CRDT store. SQLite-only — Postgres mode does not yet support per-row CRDT snapshots at the runtime layer (CRDT broadcasts degrade to JSON change events).

§Panics

Panics on Postgres backend. Call sites that may run under either backend should branch on is_postgres() first.

Source

pub fn insert(&self, entity: &str, data: &Value) -> Result<String, RuntimeError>

Insert a new row. Returns the generated ID.

For entities with crdt: true (the default) the LoroDoc snapshot

  • the SQLite materialized row are committed together in a single SQLite transaction so a crash between the two leaves neither. crdt: false entities skip the LoroDoc and use a direct write (legacy LWW path). Both produce the same on-disk row shape, so reads, indexes, FTS, and policies don’t change between modes.
Source

pub fn get_by_id( &self, entity: &str, id: &str, ) -> Result<Option<Value>, RuntimeError>

Get a single row by ID.

Source

pub fn list(&self, entity: &str) -> Result<Vec<Value>, RuntimeError>

List all rows for an entity.

Source

pub fn list_after( &self, entity: &str, after: Option<&str>, limit: usize, ) -> Result<Vec<Value>, RuntimeError>

List rows after a cursor ID (for cursor-based pagination).

Source

pub fn update( &self, entity: &str, id: &str, data: &Value, ) -> Result<bool, RuntimeError>

Update a row by ID. Returns true if a row was found and updated.

For entities with crdt: true (the default) the LoroDoc receives the patch first; the SQLite UPDATE writes the same fields so the materialized view stays in lockstep with the doc state.

Source

pub fn delete(&self, entity: &str, id: &str) -> Result<bool, RuntimeError>

Delete a row by ID. Returns true if a row was actually deleted.

Source

pub fn lookup( &self, entity: &str, field: &str, value: &str, ) -> Result<Option<Value>, RuntimeError>

Lookup a single row by a field value (e.g., email).

Link two entities by setting a foreign-key field.

Unlink a relation by setting the foreign-key field to null.

Source

pub fn query_filtered( &self, entity: &str, filter: &Value, ) -> Result<Vec<Value>, RuntimeError>

Execute a filtered query with operators ($not, $gt, $in, $like, $order, $limit).

Source

pub fn query_graph(&self, query: &Value) -> Result<Value, RuntimeError>

Execute a graph-style query.

Input: { "User": { "where": { "email": "..." }, "include": { "posts": {} } } } Returns nested results following relations.

Source

pub fn insert_with_conn( &self, conn: &Connection, entity: &str, data: &Value, ) -> Result<String, RuntimeError>

Insert using an already-locked connection (for transactions).

Source

pub fn update_with_conn( &self, conn: &Connection, entity: &str, id: &str, data: &Value, ) -> Result<bool, RuntimeError>

Update using an already-locked connection (for transactions).

Source

pub fn delete_with_conn( &self, conn: &Connection, entity: &str, id: &str, ) -> Result<bool, RuntimeError>

Delete using an already-locked connection (for transactions).

Source

pub fn get_by_id_with_conn( &self, conn: &Connection, entity: &str, id: &str, ) -> Result<Option<Value>, RuntimeError>

Read a row by id using a pre-held connection (for transactions).

Source

pub fn list_with_conn( &self, conn: &Connection, entity: &str, ) -> Result<Vec<Value>, RuntimeError>

List rows using a pre-held connection (for transactions).

Source

pub fn list_after_with_conn( &self, conn: &Connection, entity: &str, after: Option<&str>, limit: usize, ) -> Result<Vec<Value>, RuntimeError>

List after cursor using a pre-held connection (for transactions).

Source

pub fn lookup_with_conn( &self, conn: &Connection, entity: &str, field: &str, value: &str, ) -> Result<Option<Value>, RuntimeError>

Lookup by field using a pre-held connection (for transactions).

Link relation using a pre-held connection (for transactions).

Unlink relation using a pre-held connection (for transactions).

Source

pub fn query_filtered_with_conn( &self, conn: &Connection, entity: &str, filter: &Value, ) -> Result<Vec<Value>, RuntimeError>

Query with filters using a pre-held connection (for transactions).

Shares the filter-building logic with [query_filtered] by executing against the provided connection rather than acquiring one.

Source

pub fn query_graph_with_conn( &self, conn: &Connection, query: &Value, ) -> Result<Value, RuntimeError>

Graph query using a pre-held connection (for transactions).

Source

pub fn aggregate( &self, entity: &str, spec: &Value, ) -> Result<Value, RuntimeError>

Run an aggregation query. See pylon_http::DataStore::aggregate for the spec shape.

Source

pub fn pg_data_store_pub(&self) -> Option<&PostgresDataStore>

Borrow the underlying Postgres DataStore if this runtime is Postgres-backed. Used by the DataStore adapter in datastore.rs to delegate transact/search etc. without re-implementing them. Accessor for the underlying PostgresDataStore. Used by integration tests to exercise in-tx primitives directly without going through a TS function handler. Also useful for callers that need to drop down to raw PG (e.g. running an EXPLAIN against the live cluster from an admin tool). Returns None on SQLite-backed runtimes.

Trait Implementations§

Source§

impl DataStore for Runtime

Source§

fn search(&self, entity: &str, query: &Value) -> Result<Value, DataError>

Bridge the typed SearchQuery / SearchResult shapes to the trait’s JSON-in / JSON-out contract. The router passes a JSON body; we deserialize, look up the entity’s SearchConfig, run the planner, and re-serialize. Serialization round-tripping lets this method live on the DataStore trait without forcing pylon-http to depend on pylon-storage.

Source§

fn crdt_snapshot( &self, entity: &str, row_id: &str, ) -> Result<Option<Vec<u8>>, DataError>

Return the binary CRDT snapshot for a row. Ok(None) for any entity with crdt: false (the LWW opt-out) — the router uses that to decide whether to ship a binary update over WebSocket after the write.

Source§

fn crdt_apply_update( &self, entity: &str, row_id: &str, update: &[u8], ) -> Result<Vec<u8>, DataError>

Client-pushed Loro update. Imports into the row’s LoroDoc, re-projects the doc state into the materialized SQLite columns (so subsequent reads see the merged content), and returns the fresh full-row snapshot for the router to broadcast to other clients.

Wrapped in a single SQLite transaction — same crash-safety shape as Runtime::insert/update. Either the LoroStore + SQLite columns both update or neither does.

Source§

fn manifest(&self) -> &AppManifest

Source§

fn insert(&self, entity: &str, data: &Value) -> Result<String, DataError>

Source§

fn get_by_id(&self, entity: &str, id: &str) -> Result<Option<Value>, DataError>

Source§

fn list(&self, entity: &str) -> Result<Vec<Value>, DataError>

Source§

fn list_after( &self, entity: &str, after: Option<&str>, limit: usize, ) -> Result<Vec<Value>, DataError>

Source§

fn update( &self, entity: &str, id: &str, data: &Value, ) -> Result<bool, DataError>

Source§

fn delete(&self, entity: &str, id: &str) -> Result<bool, DataError>

Source§

fn lookup( &self, entity: &str, field: &str, value: &str, ) -> Result<Option<Value>, DataError>

Source§

fn query_filtered( &self, entity: &str, filter: &Value, ) -> Result<Vec<Value>, DataError>

Source§

fn query_graph(&self, query: &Value) -> Result<Value, DataError>

Source§

fn aggregate(&self, entity: &str, spec: &Value) -> Result<Value, DataError>

Run an aggregation query. Read more
Source§

fn transact(&self, ops: &[Value]) -> Result<(bool, Vec<Value>), DataError>

Execute transactional operations. Each element is a JSON object with op (“insert”/“update”/“delete”), entity, and optionally id/data. Read more

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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