Struct watchexec::Watchexec

source ·
pub struct Watchexec {
    pub config: Arc<Config>,
    /* private fields */
}
Expand description

The main watchexec runtime.

All this really does is tie the pieces together in one convenient interface.

It creates the correct channels, spawns every available event sources, the action worker, the error hook, and provides an interface to change the runtime configuration during the runtime, inject synthetic events, and wait for graceful shutdown.

Fields§

§config: Arc<Config>

The configuration of this Watchexec instance.

Configuration can be changed at any time using the provided methods on Config.

Treat this field as readonly: replacing it with a different instance of Config will not do anything except potentially lose you access to the actual Watchexec config. In normal use you’ll have obtained Watchexec behind an Arc so that won’t be an issue.

§Examples

Change the action handler:

let wx = Watchexec::default();
wx.config.on_action(|mut action| {
    if action.signals().next().is_some() {
        action.quit();
    }

    action
});

Set paths to be watched:

let wx = Watchexec::new(|mut action| {
    if action.signals().next().is_some() {
        action.quit();
    } else {
        for event in action.events.iter() {
            println!("{event:?}");
        }
    }

    action
}).unwrap();

wx.config.pathset(["."]);

Implementations§

source§

impl Watchexec

source

pub fn new( action_handler: impl Fn(ActionHandler) -> ActionHandler + Send + Sync + 'static ) -> Result<Arc<Self>, CriticalError>

Instantiates a new Watchexec runtime given an initial action handler.

Returns an Arc for convenience; use try_unwrap to get the value directly if needed, or use new_with_config.

Look at the Config documentation for more on the required action handler. Watchexec will subscribe to most signals sent to the process it runs in and send them, as Events, to the action handler. At minimum, you should check for interrupt/ctrl-c events and call action.quit() in your handler, otherwise hitting ctrl-c will do nothing.

source

pub fn new_async( action_handler: impl Fn(ActionHandler) -> Box<dyn Future<Output = ActionHandler> + Send + Sync> + Send + Sync + 'static ) -> Result<Arc<Self>, CriticalError>

Instantiates a new Watchexec runtime given an initial async action handler.

This is the same as new except the action handler is async.

source

pub fn with_config(config: Config) -> Result<Self, CriticalError>

Instantiates a new Watchexec runtime with a config.

This is generally not needed: the config can be changed after instantiation (before and after starting Watchexec with main()). The only time this should be used is to set the “unchangeable” configuration items for internal details like buffer sizes for queues, or to obtain Self unwrapped by an Arc like new() does.

source

pub async fn send_event( &self, event: Event, priority: Priority ) -> Result<(), CriticalError>

Inputs an Event directly.

This can be useful for testing, for custom event sources, or for one-off action triggers (for example, on start).

Hint: use Event::default() to send an empty event (which won’t be filtered).

source

pub fn main(&self) -> JoinHandle<Result<(), CriticalError>>

Start watchexec and obtain the handle to its main task.

This must only be called once.

§Panics

Panics if called twice.

Trait Implementations§

source§

impl Debug for Watchexec

source§

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

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

impl Default for Watchexec

source§

fn default() -> Self

Instantiate with default config.

Note that this will panic if the constructor errors.

Prefer calling new() instead.

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

source§

const ALIGN: usize = _

The alignment of pointer.
§

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