Server

Struct Server 

Source
pub struct Server(/* private fields */);
Expand description

The primary server structure that provides a thread-safe interface to the server’s state.

This struct acts as a public-facing wrapper around an Arc<RwLock<ServerInner>>. It allows multiple parts of the application to safely share and modify the server’s configuration and state across different threads and asynchronous tasks.

Implementations§

Source§

impl Server

Represents the server, providing methods to configure and run it.

This struct wraps the ServerInner configuration and routing logic, offering a high-level API for setting up the HTTP and WebSocket server.

Source

pub async fn new() -> Self

Creates a new Server instance with default settings.

§Returns
  • Self - A new Server instance.
Source

pub async fn from(config: ServerConfig) -> Self

Creates a new Server instance from a configuration.

§Arguments
  • ServerConfig - The server configuration.
§Returns
  • Self - A new Server instance.
Source

pub async fn handle_hook(&self, hook: HookMacro)

Handle a given hook macro asynchronously.

This function dispatches the provided HookMacro to the appropriate internal handler based on its HookType. Supported hook types include panic hooks, disable HTTP/WS hooks, connected hooks, pre-upgrade hooks, request/response middleware, and routes.

§Arguments
  • HookMacro: The HookMacro instance containing the HookType and its handler.
Source

pub async fn config_str<C: ToString>(&self, config_str: C) -> &Self

Sets the server configuration from a string.

§Arguments
  • C: ToString - The configuration.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn config(&self, config: ServerConfig) -> &Self

Sets the server configuration.

§Arguments
  • ServerConfig - The server configuration.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn panic_hook<F, Fut>(&self, hook: F) -> &Self

Sets a custom panic hook for request processing.

§Arguments
  • F: FnContextSendSyncStatic<Fut, ()> - The panic handler function.
  • Fut: FutureSendStatic<()> - The future returned by the panic handler.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn route<R, F, Fut>(&self, route: R, hook: F) -> &Self

Adds a route handler for a specific path.

§Arguments
  • R: ToString - The route path pattern.
  • F: FnContextSendSyncStatic<Fut, ()> - The handler function for the route.
  • Fut: FutureSendStatic<()> - The future returned by the handler.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn request_middleware<F, Fut>(&self, hook: F) -> &Self

Adds request middleware to the processing pipeline.

§Arguments
  • F: FnContextSendSyncStatic<Fut, ()> - The middleware function.
  • Fut: FutureSendStatic<()> - The future returned by the middleware.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub async fn response_middleware<F, Fut>(&self, hook: F) -> &Self

Adds response middleware to the processing pipeline.

§Arguments
  • F: FnContextSendSyncStatic<Fut, ()> - The middleware function.
  • Fut: FutureSendStatic<()> - The future returned by the middleware.
§Returns
  • &Self - Reference to self for method chaining.
Source

pub fn format_host_port<H: ToString>(host: H, port: usize) -> String

Formats the host and port into a bindable address string.

§Arguments
  • H: ToString - The host address.
  • usize - The port number.
§Returns
  • String - The formatted address string.
Source

pub async fn run(&self) -> ServerResult<ServerHook>

Starts the server, binds to the configured address, and begins listening for connections.

This is the main entry point to launch the server. It will initialize the panic hook, create a TCP listener, and then enter the connection acceptance loop in a background task.

§Returns

Returns a ServerResult containing a shutdown function on success. Calling this function will shut down the server by aborting its main task. Returns an error if the server fails to start.

Trait Implementations§

Source§

impl Clone for Server

Source§

fn clone(&self) -> Server

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Server

Source§

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

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

impl Default for Server

Source§

fn default() -> Server

Returns the “default value” for a type. Read more
Source§

impl Display for Server

Source§

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

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

impl PartialEq for Server

Implements the PartialEq trait for Server.

This allows for comparing two Server instances for equality.

Source§

fn eq(&self, other: &Self) -> bool

Checks if two Server instances are equal.

§Arguments
  • &Self: The other Server instance to compare against.
§Returns
  • bool: true if the instances are equal, false otherwise.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Server

Implements the Eq trait for Server.

This indicates that Server has a total equality relation.

Auto Trait Implementations§

§

impl Freeze for Server

§

impl !RefUnwindSafe for Server

§

impl Send for Server

§

impl Sync for Server

§

impl Unpin for Server

§

impl !UnwindSafe for Server

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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> AnySend for T
where T: Any + Send,

Source§

impl<T> AnySendClone for T
where T: Any + Send + Clone,

Source§

impl<T> AnySendSync for T
where T: Any + Send + Sync,

Source§

impl<T> AnySendSyncClone for T
where T: Any + Send + Sync + Clone,

Source§

impl<T> AnySync for T
where T: Any + Sync,

Source§

impl<T> AnySyncClone for T
where T: Any + Sync + Clone,

Source§

impl<T> ErasedDestructor for T
where T: 'static,