Skip to main content

RustvelloBuilder

Struct RustvelloBuilder 

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

Fluent builder for constructing a [RustvelloApp].

Provides an ergonomic API for configuring backends, loading settings from environment variables or TOML files, and applying dev-mode presets.

§Priority order (highest wins)

  1. Programmatic — explicit builder method calls
  2. Environment variables — always read automatically
  3. Config file — via from_file()
  4. pyproject.toml — [tool.rustvello.app]
  5. Defaults

§Examples

use rustvello::prelude::*;

// Minimal in-memory defaults
let app = Rustvello::builder()
    .app_id("my-app")
    .build().await?;

Implementations§

Source§

impl RustvelloBuilder

Source

pub async fn build(self) -> RustvelloResult<RustvelloApp>

Consume the builder and produce a RustvelloApp.

Establishes all backend connections (database, Redis, etc.) that were configured via preset methods like .sqlite(), .redis(), or .postgres().

If no backends were explicitly provided, falls back to:

  • In-memory backends (when the mem feature is enabled)
  • Error otherwise

If auto_discover_tasks() was called, all tasks registered via #[rustvello::task] are automatically added to the registry. Additionally, any task modules added via task_module() are registered.

Source§

impl RustvelloBuilder

Source

pub fn memory(self) -> Self

Available on crate feature mem only.

Use all in-memory backends (suitable for testing and development).

No connections are established — backends are created during build().

Source

pub fn sqlite(self, path: &str, app_id: &str) -> Self

Available on crate feature sqlite only.

Use all SQLite backends with the given database path.

The database file is opened during build(), not here.

Source

pub fn redis(self, uri: &str, app_id: &str) -> Self

Available on crate feature redis only.

Use all Redis backends with the given connection URI.

The connection pool is created during build(), not here.

§Examples
let app = Rustvello::builder()
    .redis("redis://127.0.0.1/", "my_app")
    .build().await?;
Source

pub fn mongodb(self, uri: &str, db_name: &str, app_id: &str) -> Self

Available on crate feature mongodb only.

Use all MongoDB backends with the given connection URI and database name.

The connection pool is created during build(), not here.

§Examples
let app = Rustvello::builder()
    .mongodb("mongodb://localhost:27017", "rustvello_db", "my_app")
    .build().await?;
Source

pub fn rabbitmq(self, uri: &str, prefix: &str) -> Self

Available on crate feature rabbitmq only.

Use a RabbitMQ broker with the given AMQP URI and queue prefix.

Only sets the broker — orchestrator, state backend, client data store, and trigger store must be provided separately (e.g. via .redis() or .sqlite()). This matches the Python pynenc_rabbitmq plugin which only provides a broker implementation.

The connection is established during build(), not here.

§Examples
let app = Rustvello::builder()
    .rabbitmq("amqp://localhost:5672", "myapp")
    .redis("redis://127.0.0.1/", "my_app")
    .build().await?;
Source

pub fn postgres(self, connection_string: &str, app_id: &str) -> Self

Available on crate feature postgres only.

Use all PostgreSQL backends with the given connection string.

The connection pool is created during build(), not here.

§Examples
let app = Rustvello::builder()
    .postgres("postgresql://user:pass@localhost/mydb", "my_app")
    .build().await?;
Source

pub fn postgres_tls(self, connection_string: &str, app_id: &str) -> Self

Available on crate features postgres and tls only.

Use all PostgreSQL backends with TLS encryption.

Requires both the postgres and tls features.

Source

pub fn mongo3(self, uri: &str, db_name: &str, app_id: &str) -> Self

Available on crate feature mongodb3 only.

Use all MongoDB 3.6+ backends with the given connection URI and database name.

The connection pool is created during build(), not here.

§Examples
let app = Rustvello::builder()
    .mongo3("mongodb://localhost:27017", "rustvello_db", "my_app")
    .build().await?;
Source§

impl RustvelloBuilder

Source

pub fn app_id(self, id: impl Into<String>) -> Self

Set the application identifier.

Source

pub fn dev_mode(self, enabled: bool) -> Self

Enable or disable synchronous dev-mode execution.

Source

pub fn max_pending_seconds(self, seconds: u64) -> Self

Set the maximum pending time for invocations (in seconds).

Source

pub fn heartbeat_interval(self, seconds: u64) -> Self

Set the heartbeat interval for runners (in seconds).

Source

pub fn argument_print_mode(self, mode: ArgumentPrintMode) -> Self

Set the argument print mode (Full, Keys, Truncated, Hidden).

Source

pub fn hide_arguments(self) -> Self

Hide all argument values in logs and display.

Source

pub fn truncate_arguments_length(self, length: usize) -> Self

Set the maximum length for truncated argument display.

Source

pub fn runner_dead_after_seconds(self, seconds: u64) -> Self

Set how long (seconds) before a runner without heartbeats is considered dead.

Source

pub fn recovery_check_interval(self, seconds: u64) -> Self

Set how often (seconds) to scan for stale invocations.

Source

pub fn cached_status_time(self, seconds: f64) -> Self

Set the TTL for cached invocation status checks (seconds, 0 = no cache).

Source

pub fn recover_pending_cron(self, cron: impl Into<String>) -> Self

Set the cron expression for recovering pending invocations.

Source

pub fn recover_running_cron(self, cron: impl Into<String>) -> Self

Set the cron expression for recovering running invocations from dead runners.

Source

pub fn trigger_task_modules(self, modules: Vec<String>) -> Self

Set module paths to scan for trigger task registration.

Source

pub fn logging_level(self, level: impl Into<String>) -> Self

Set the logging level (trace, debug, info, warn, error).

Source

pub fn log_format(self, format: LogFormat) -> Self

Set the log output format (Text or Json).

Source

pub fn log_use_colors(self, use_colors: Option<bool>) -> Self

Set whether to use ANSI colors in text format (None = auto-detect TTY).

Source

pub fn compact_log_context(self, compact: bool) -> Self

Set whether to show compact context in logs.

Source

pub fn blocking_control(self, enabled: bool) -> Self

Set whether the orchestrator uses blocking/waiting semantics.

Source

pub fn auto_final_invocation_purge_hours(self, hours: f64) -> Self

Set hours after which final invocations can be auto-purged (0 = disabled).

Source

pub fn scheduler_interval(self, seconds: u64) -> Self

Set the scheduler evaluation interval in seconds.

Source

pub fn enable_scheduler(self, enabled: bool) -> Self

Set whether the trigger scheduler is enabled.

Source

pub fn broker(self, broker: Arc<dyn Broker>) -> Self

Use a custom broker.

Source

pub fn orchestrator(self, orch: Arc<dyn Orchestrator>) -> Self

Use a custom orchestrator.

Source

pub fn state_backend(self, sb: Arc<dyn StateBackend>) -> Self

Use a custom state backend.

Source

pub fn client_data_store(self, cds: Arc<dyn ClientDataStore>) -> Self

Use a custom client data store backend.

Source

pub fn client_data_store_config(self, config: ClientDataStoreConfig) -> Self

Configure the client data store manager.

Source

pub fn auto_discover_tasks(self) -> Self

Auto-discover all tasks registered via #[rustvello::task] at compile time.

Uses the inventory crate to collect all [TaskEntry] instances submitted by the proc macro. This is the Rust equivalent of pynenc’s _load_plugins() via entry_points.

Source

pub fn task_module(self, module: Box<dyn TaskModule>) -> Self

Register a TaskModule — a group of related tasks.

Equivalent to pynenc’s _register_plugin_from_entry_point().

Source

pub fn trigger_store(self, store: Arc<dyn TriggerStore>) -> Self

Set a custom trigger store backend.

Source

pub fn logging(self) -> LoggingBuilder

Open the logging & display sub-builder.

let app = Rustvello::builder()
    .logging()
        .level("debug")
        .compact_context(true)
        .done()
    .build().await?;
Source

pub fn performance(self) -> PerformanceBuilder

Open the performance & scheduling sub-builder.

Source

pub fn reliability(self) -> ReliabilityBuilder

Open the reliability & recovery sub-builder.

Source

pub fn from_env(self) -> Self

Enable reading environment variables (RUSTVELLO__*) during build().

When called, environment variables are added to the priority chain: programmatic > env > file > defaults.

Source

pub fn from_file(self, path: impl AsRef<Path>) -> RustvelloResult<Self>

Load task-section config from a TOML file and register the path for the cistell resolver to read [app] fields during build().

Reads [task_defaults] and [tasks.<name>] sections immediately. The [app] section is resolved later via cistell’s FileSource.

Trait Implementations§

Source§

impl Debug for RustvelloBuilder

Source§

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

Formats the value using the given formatter. 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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

Source§

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

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

impl<T> FmtForward for T

Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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> 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> Pipe for T
where T: ?Sized,

Source§

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

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

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

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

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

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

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

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

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

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

Immutable access to a value. Read more
Source§

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

Mutable access to a value. Read more
Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<T> TryConv for T

Source§

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

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