pub struct ThinData<T>(pub T);Expand description
Application data wrapper and extractor for cheaply-cloned types.
Similar to the Data wrapper but for Clone/Copy types that are already an Arc internally,
share state using some other means when cloned, or is otherwise static data that is very cheap
to clone.
Unlike Data, this wrapper clones T during extraction. Therefore, it is the user’s
responsibility to ensure that clones of T do actually share the same state, otherwise state
may be unexpectedly different across multiple requests.
Note that if your type is literally an Arc<T> then it’s recommended to use the
Data::from(arc) conversion instead.
§Examples
use actix_web::{
    web::{self, ThinData},
    App, HttpResponse, Responder,
};
// Use the `ThinData<T>` extractor to access a database connection pool.
async fn index(ThinData(db_pool): ThinData<DbPool>) -> impl Responder {
    // database action ...
    HttpResponse::Ok()
}
let db_pool = DbPool::default();
App::new()
    .app_data(ThinData(db_pool.clone()))
    .service(web::resource("/").get(index))Tuple Fields§
§0: TTrait Implementations§
Source§impl<T: Clone + 'static> FromRequest for ThinData<T>
 
impl<T: Clone + 'static> FromRequest for ThinData<T>
Auto Trait Implementations§
impl<T> Freeze for ThinData<T>where
    T: Freeze,
impl<T> RefUnwindSafe for ThinData<T>where
    T: RefUnwindSafe,
impl<T> Send for ThinData<T>where
    T: Send,
impl<T> Sync for ThinData<T>where
    T: Sync,
impl<T> Unpin for ThinData<T>where
    T: Unpin,
impl<T> UnwindSafe for ThinData<T>where
    T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<R> Rng for R
 
impl<R> Rng for R
Source§fn random<T>(&mut self) -> Twhere
    StandardUniform: Distribution<T>,
 
fn random<T>(&mut self) -> Twhere
    StandardUniform: Distribution<T>,
Return a random value via the 
StandardUniform distribution. Read moreSource§fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
 
fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
Source§fn random_range<T, R>(&mut self, range: R) -> Twhere
    T: SampleUniform,
    R: SampleRange<T>,
 
fn random_range<T, R>(&mut self, range: R) -> Twhere
    T: SampleUniform,
    R: SampleRange<T>,
Generate a random value in the given range. Read more
Source§fn random_bool(&mut self, p: f64) -> bool
 
fn random_bool(&mut self, p: f64) -> bool
Return a bool with a probability 
p of being true. Read moreSource§fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
 
fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
Return a bool with a probability of 
numerator/denominator of being
true. Read moreSource§fn sample<T, D>(&mut self, distr: D) -> Twhere
    D: Distribution<T>,
 
fn sample<T, D>(&mut self, distr: D) -> Twhere
    D: Distribution<T>,
Sample a new value, using the given distribution. Read more
Source§fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
    D: Distribution<T>,
    Self: Sized,
 
fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
    D: Distribution<T>,
    Self: Sized,
Create an iterator that generates values using the given distribution. Read more
Source§fn gen<T>(&mut self) -> Twhere
    StandardUniform: Distribution<T>,
 
fn gen<T>(&mut self) -> Twhere
    StandardUniform: Distribution<T>,
👎Deprecated since 0.9.0: Renamed to 
random to avoid conflict with the new gen keyword in Rust 2024.Alias for 
Rng::random.Source§fn gen_range<T, R>(&mut self, range: R) -> Twhere
    T: SampleUniform,
    R: SampleRange<T>,
 
fn gen_range<T, R>(&mut self, range: R) -> Twhere
    T: SampleUniform,
    R: SampleRange<T>,
👎Deprecated since 0.9.0: Renamed to 
random_rangeAlias for 
Rng::random_range.Source§impl<R> TryRngCore for R
 
impl<R> TryRngCore for R
Source§type Error = Infallible
 
type Error = Infallible
The type returned in the event of a RNG error.
Source§fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
 
fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
Return the next random 
u32.Source§fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
 
fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
Return the next random 
u64.Source§fn try_fill_bytes(
    &mut self,
    dst: &mut [u8],
) -> Result<(), <R as TryRngCore>::Error>
 
fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>
Fill 
dest entirely with random data.Source§fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
 
fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
Wrap RNG with the 
UnwrapMut wrapper.Source§fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
    Self: Sized,
 
fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
    Self: Sized,
Convert an 
RngCore to a RngReadAdapter.