pub fn new(
		action_handler: impl (Fn(ActionHandler) -> ActionHandler) + Send + Sync + 'static,
	) -> Result<Arc<Self>, CriticalError> {
		let config = Config::default();
		config.on_action(action_handler);
		Self::with_config(config).map(Arc::new)
	}
Instantiates a new `Watchexec` runtime given an initial action handler.

Returns an [`Arc`] for convenience; use [`try_unwrap`][Arc::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
[`Event`]s, 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.
crates/lib/src/watchexec.rs