From 02d85911f9e4e303c4903ca65c317142c4d4b965 Mon Sep 17 00:00:00 2001 From: Lars Francke Date: Fri, 16 Oct 2020 12:18:14 +0200 Subject: [PATCH] Trying to improve the documentation for App::data() --- src/app.rs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/app.rs b/src/app.rs index 6a4b97b69..004dee371 100644 --- a/src/app.rs +++ b/src/app.rs @@ -70,16 +70,24 @@ where InitError = (), >, { - /// Set application data. Application data could be accessed - /// by using `Data` extractor where `T` is data type. + /// Adds application data. + /// Application data can be accessed by using a `Data` extractor where `T` is the data type. /// - /// **Note**: http server accepts an application factory rather than - /// an application instance. Http server constructs an application - /// instance for each thread, thus application data must be constructed - /// multiple times. If you want to share data between different - /// threads, a shared object should be used, e.g. `Arc`. Internally `Data` type - /// uses `Arc` so data could be created outside of app factory and clones could - /// be stored via `App::app_data()` method. + /// The state is managed on a per-type basis and as such there can be + /// at most one value for any given type. + /// This means that only the first invocation of this function per type will have an effect, + /// all later ones will be ignored. + /// + /// Internally the data will be wrapped in an `Arc`. + /// If your data is already wrapped in an `Arc` + /// you can instead store it directly using the `App::app_data()` function. + /// + /// **Note**: `HttpServer` accepts an application factory rather than + /// an application instance (`App`). + /// `HttpServer` constructs an application instance for each thread, + /// thus application data must be constructed multiple times. + /// If you want to share data between different threads, + /// a shared object should be used, e.g. `Arc`. /// /// ```rust /// use std::cell::Cell;