Struct Read

Source
pub struct Read<P: Key> { /* private fields */ }
Expand description

Middleware for data that persists between Requests with read-only capabilities.

The data is stored behind an Arc, so multiple threads can have concurrent, non-blocking access.

Read can be linked as BeforeMiddleware to add data to the Request extensions and it can be linked as an AfterMiddleware to add data to the Response extensions.

Read also implements Plugin, so the data stored within can be accessed through request.get::<Read<P>>() as an Arc<P::Value>.

Implementations§

Source§

impl<P: Key> Read<P>
where P::Value: Send + Sync,

Source

pub fn both<T>(start: T) -> (Read<P>, Read<P>)
where T: PersistentInto<Arc<P::Value>>,

Construct a new pair of Read that can be passed directly to Chain::link.

The data is initialized with the passed-in value.

Examples found in repository?
examples/variable_passing.rs (line 28)
24fn main() {
25    // This can be passed from command line arguments for example.
26    let log_path = String::from("/path/to/a/log/file.log");
27    let mut chain = Chain::new(serve_hits);
28    chain.link(Read::<Log>::both(log_path));
29    Iron::new(chain).http("localhost:3000").unwrap();
30}
Source

pub fn one<T>(start: T) -> Read<P>
where T: PersistentInto<Arc<P::Value>>,

Construct a new Read that can be passed directly to Chain::link_before or Chain::link_after.

The data is initialized with the passed-in value.

Trait Implementations§

Source§

impl<P: Key> AfterMiddleware for Read<P>
where P::Value: Send + Sync,

Source§

fn after(&self, _: &mut Request<'_, '_>, res: Response) -> IronResult<Response>

Do whatever post-processing this middleware should do.
Source§

fn catch( &self, _: &mut Request<'_, '_>, err: IronError, ) -> Result<Response, IronError>

Respond to an error thrown by previous AfterMiddleware, the Handler, or a BeforeMiddleware. Read more
Source§

impl<P: Key> BeforeMiddleware for Read<P>
where P::Value: Send + Sync,

Source§

fn before(&self, req: &mut Request<'_, '_>) -> IronResult<()>

Do whatever work this middleware should do with a Request object.
Source§

fn catch( &self, _: &mut Request<'_, '_>, err: IronError, ) -> Result<(), IronError>

Respond to an error thrown by a previous BeforeMiddleware. Read more
Source§

impl<P: Key> Clone for Read<P>
where P::Value: Send + Sync,

Source§

fn clone(&self) -> Read<P>

Returns a copy 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<P: Key> Key for Read<P>
where P::Value: 'static,

Source§

type Value = Arc<<P as Key>::Value>

The value type associated with this key type.
Source§

impl<'a, 'b, P: Key> Plugin<Request<'a, 'b>> for Read<P>
where P::Value: Send + Sync,

Source§

type Error = PersistentError

The error type associated with this plugin.
Source§

fn eval(req: &mut Request<'a, 'b>) -> Result<Arc<P::Value>, PersistentError>

Create the plugin from an instance of the extended type. Read more

Auto Trait Implementations§

§

impl<P> Freeze for Read<P>

§

impl<P> RefUnwindSafe for Read<P>
where <P as Key>::Value: RefUnwindSafe,

§

impl<P> Send for Read<P>
where <P as Key>::Value: Sync + Send,

§

impl<P> Sync for Read<P>
where <P as Key>::Value: Sync + Send,

§

impl<P> Unpin for Read<P>

§

impl<P> UnwindSafe for Read<P>
where <P as Key>::Value: RefUnwindSafe,

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> CloneAny for T
where T: Any + Clone,

Source§

fn clone_any(&self) -> Box<dyn CloneAny>

Source§

fn clone_any_send(&self) -> Box<dyn CloneAny + Send>
where T: Send,

Source§

fn clone_any_sync(&self) -> Box<dyn CloneAny + Sync>
where T: Sync,

Source§

fn clone_any_send_sync(&self) -> Box<dyn CloneAny + Send + Sync>
where T: Send + Sync,

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> PersistentInto<Arc<Mutex<T>>> for T

Source§

fn persistent_into(self) -> Arc<Mutex<T>>

Convert self into a value of type T.
Source§

impl<T> PersistentInto<Arc<RwLock<T>>> for T

Source§

fn persistent_into(self) -> Arc<RwLock<T>>

Convert self into a value of type T.
Source§

impl<T> PersistentInto<Arc<T>> for T

Source§

fn persistent_into(self) -> Arc<T>

Convert self into a value of type T.
Source§

impl<T> PersistentInto<T> for T

Source§

fn persistent_into(self) -> T

Convert self into a value of type T.
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, 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<T> Typeable for T
where T: Any,

Source§

fn get_type(&self) -> TypeId

Get the TypeId of this object.
Source§

impl<T> UnsafeAny for T
where T: Any,