Fix a ton of broken links.

This commit is contained in:
Sergio Benitez 2021-06-09 02:53:11 -07:00
parent 3b5f5afc6e
commit 01436d2d24
18 changed files with 135 additions and 135 deletions

View File

@ -249,7 +249,7 @@ macro_rules! route_attribute {
///
/// If a data guard fails, the request is forwarded if the
/// [`Outcome`] is `Forward` or failed if the [`Outcome`] is
/// `Failure`. See [`FromData` Outcomes] for further detail.
/// `Failure`. See [`FromData`] for further detail.
///
/// If all validation succeeds, the decorated function is called.
/// The returned value is used to generate a [`Response`] via the
@ -265,14 +265,13 @@ macro_rules! route_attribute {
/// 3. A macro used by [`uri!`] to type-check and generate an
/// [`Origin`].
///
/// [`Handler`]: rocket::route::Handler
/// [`Handler`]: ../rocket/route/trait.Handler.html
/// [`routes!`]: macro.routes.html
/// [`uri!`]: macro.uri.html
/// [`Origin`]: rocket::http::uri::Origin
/// [`Outcome`]: rocket::outcome::Outcome
/// [`Response`]: rocket::Response
/// [`FromRequest` Outcomes]: rocket::request::FromRequest#outcomes
/// [`FromData` Outcomes]: rocket::data::FromData#outcomes
/// [`Origin`]: ../rocket/http/uri/struct.Origin.html
/// [`Outcome`]: ../rocket/outcome/enum.Outcome.html
/// [`Response`]: ../rocket/struct.Response.html
/// [`FromRequest` Outcomes]: ../rocket/request/trait.FromRequest.html#outcomes
#[proc_macro_attribute]
pub fn $name(args: TokenStream, input: TokenStream) -> TokenStream {
emit!(attribute::route::route_attribute($method, args, input))
@ -346,13 +345,13 @@ route_attribute!(options => Method::Options);
/// name (the function's name) and status code from the route attribute or
/// `None` if `default`. The handler is set to the generated handler.
///
/// [`&Request`]: rocket::Request
/// [`Status`]: rocket::http::Status
/// [`Handler`]: rocket::catcher::Handler
/// [`&Request`]: ../rocket/struct.Request.html
/// [`Status`]: ../rocket/http/struct.Status.html
/// [`Handler`]: ../rocket/catcher/trait.Handler.html
/// [`catchers!`]: macro.catchers.html
/// [`Catcher`]: rocket::Catcher
/// [`Response`]: rocket::Response
/// [`Responder`]: rocket::Responder
/// [`Catcher`]: ../rocket/struct.Catcher.html
/// [`Response`]: ../rocket/struct.Response.html
/// [`Responder`]: ../rocket/response/trait.Responder.html
#[proc_macro_attribute]
pub fn catch(args: TokenStream, input: TokenStream) -> TokenStream {
emit!(attribute::catch::catch_attribute(args, input))
@ -540,8 +539,7 @@ pub fn launch(args: TokenStream, input: TokenStream) -> TokenStream {
/// variant. In the example above, the the strings `"fourth"`, `"FOUrth"`,
/// `"fiFTH"` and so on would parse as `MyValue::Third`.
///
/// [`FromFormField`]: rocket::form::FromFormField
/// [`FromFormField::Error`]: rocket::form::FromFormField::Error
/// [`FromFormField`]: ../rocket/form/trait.FromFormField.html
#[proc_macro_derive(FromFormField, attributes(field))]
pub fn derive_from_form_field(input: TokenStream) -> TokenStream {
emit!(derive::from_form_field::derive_from_form_field(input))
@ -941,9 +939,9 @@ pub fn derive_responder(input: TokenStream) -> TokenStream {
/// the example above, the variant `Kind::String` will render with a value of
/// `str`.
///
/// [`UriDisplay<Query>`]: ../rocket/http/uri/trait.UriDisplay.html
/// [`Formatter::write_named_value()`]: ../rocket/http/uri/struct.Formatter.html#method.write_named_value
/// [`Formatter::write_value()`]: ../rocket/http/uri/struct.Formatter.html#method.write_value
/// [`UriDisplay<Query>`]: ../rocket/http/uri/fmt/trait.UriDisplay.html
/// [`Formatter::write_named_value()`]: ../rocket/http/uri/fmt/struct.Formatter.html#method.write_named_value
/// [`Formatter::write_value()`]: ../rocket/http/uri/fmt/struct.Formatter.html#method.write_value
#[proc_macro_derive(UriDisplayQuery, attributes(field))]
pub fn derive_uri_display_query(input: TokenStream) -> TokenStream {
emit!(derive::uri_display::derive_uri_display_query(input))
@ -968,8 +966,8 @@ pub fn derive_uri_display_query(input: TokenStream) -> TokenStream {
/// The derive generates an implementation of the [`UriDisplay<Path>`] trait.
/// The implementation calls [`Formatter::write_value()`] for the field.
///
/// [`UriDisplay<Path>`]: ../rocket/http/uri/trait.UriDisplay.html
/// [`Formatter::write_value()`]: ../rocket/http/uri/struct.Formatter.html#method.write_value
/// [`UriDisplay<Path>`]: ../rocket/http/uri/fmt/trait.UriDisplay.html
/// [`Formatter::write_value()`]: ../rocket/http/uri/fmt/struct.Formatter.html#method.write_value
#[proc_macro_derive(UriDisplayPath)]
pub fn derive_uri_display_path(input: TokenStream) -> TokenStream {
emit!(derive::uri_display::derive_uri_display_path(input))
@ -1376,9 +1374,9 @@ pub fn catchers(input: TokenStream) -> TokenStream {
/// [`Authority`]: ../rocket/http/uri/struct.Authority.html
/// [`Absolute`]: ../rocket/http/uri/struct.Absolute.html
/// [`Reference`]: ../rocket/http/uri/struct.Reference.html
/// [`FromUriParam`]: ../rocket/http/uri/trait.FromUriParam.html
/// [`UriDisplay`]: ../rocket/http/uri/trait.UriDisplay.html
/// [`Ignorable`]: ../rocket/http/uri/trait.Ignorable.html
/// [`FromUriParam`]: ../rocket/http/uri/fmt/trait.FromUriParam.html
/// [`UriDisplay`]: ../rocket/http/uri/fmt/trait.UriDisplay.html
/// [`Ignorable`]: ../rocket/http/uri/fmt/trait.Ignorable.html
#[proc_macro]
pub fn uri(input: TokenStream) -> TokenStream {
emit!(bang::uri_macro(input))

View File

@ -22,9 +22,8 @@ use crate::uri::fmt::{self, Part};
/// * `impl<'x, P: Part> FromUriParam<P, &'x T> for T`
/// * `impl<'x, P: Part> FromUriParam<P, &'x mut T> for T`
///
/// See [`impl_from_uri_param_identity`] for usage details.
///
/// [`impl_from_uri_param_identity`]: ../macro.impl_from_uri_param_identity.html
/// See [`impl_from_uri_param_identity!`](crate::impl_from_uri_param_identity!)
/// for usage details.
///
/// # Code Generation
///

View File

@ -203,8 +203,8 @@ use crate::uri::fmt::{Part, Path, Query, Formatter};
/// details.
///
/// [`Ignorable`]: crate::uri::fmt::Ignorable
/// [`UriDisplay<Path>`]: ../../derive.UriDisplayPath.html
/// [`UriDisplay<Query>`]: ../../derive.UriDisplayQuery.html
/// [`UriDisplay<Path>`]: ../../../derive.UriDisplayPath.html
/// [`UriDisplay<Query>`]: ../../../derive.UriDisplayQuery.html
///
/// # Implementing
///

View File

@ -400,7 +400,7 @@ impl<'a> Origin<'a> {
/// Returns `true` if `self` is normalized. Otherwise, returns `false`.
///
/// See [Normalization](#normalization) for more information on what it
/// See [Normalization](Self#normalization) for more information on what it
/// means for an origin URI to be normalized. Note that `uri!()` always
/// normalizes static input.
///

View File

@ -55,7 +55,7 @@ use crate::response::stream::ReaderStream;
pub struct ByteStream<S>(pub S);
impl<S> From<S> for ByteStream<S> {
/// Creates a `ByteStream` from any [`S: Stream`](Stream).
/// Creates a `ByteStream` from any `S: Stream`.
fn from(stream: S) -> Self {
ByteStream(stream)
}

View File

@ -55,7 +55,7 @@ use crate::http::ContentType;
/// appears only in the raw server-sent event data stream and is inaccessible by
/// most clients. This includes JavaScript's `EventSource`. As such, they serve
/// little utility beyond debugging a raw data stream and keeping a connection
/// alive. See [hearbeat](struct@EventStream#hearbeat) for information on
/// alive. See [hearbeat](struct@EventStream#heartbeat) for information on
/// Rocket's `EventStream` keep-alive.
///
/// # Fields

View File

@ -56,7 +56,7 @@ use crate::response::stream::ReaderStream;
pub struct TextStream<S>(pub S);
impl<S> From<S> for TextStream<S> {
/// Creates a `TextStream` from any [`S: Stream`](Stream).
/// Creates a `TextStream` from any `S: Stream`.
fn from(stream: S) -> Self {
TextStream(stream)
}

View File

@ -780,8 +780,8 @@ pub enum Feature {
Usb,
/// The "web-share" feature.
WebShare,
/// The "xr-spatial-tracking<sup>[2](#fn2)</sup>" feature.
XrSpatialtracking,
/// The "xr-spatial-tracking" feature.
XrSpatialTracking,
// Proposed.
@ -856,7 +856,7 @@ impl Feature {
SyncXhr => "sync-xhr",
Usb => "usb",
WebShare => "web-share",
XrSpatialtracking => "xr-spatial-tracking<sup>[2](#fn2)</sup>",
XrSpatialTracking => "xr-spatial-tracking",
ClipboardRead => "clipboard-read",
ClipboardWrite => "clipboard-write",

View File

@ -699,7 +699,7 @@ async fn upload(mut file: TempFile<'_>) -> std::io::Result<()> {
}
```
[`TempFile`]: @api/rocket/fs/struct.TempFile.html
[`TempFile`]: @api/rocket/fs/enum.TempFile.html
### Streaming

View File

@ -300,11 +300,10 @@ async fn files(file: PathBuf) -> Result<NamedFile, NotFound<String>> {
Some of Rocket's best features are implemented through responders. Among these
are:
* [`Content`] - Used to override the Content-Type of a response.
* [`NamedFile`] - Streams a file to the client; automatically sets the
Content-Type based on the file's extension.
* [`Redirect`] - Redirects the client to a different URI.
* [`Stream`] - Streams a response to a client from an arbitrary `Read`er type.
* [`content`] - Contains types that override the Content-Type a response.
* [`status`] - Contains types that override the status code of a response.
* [`Flash`] - Sets a "flash" cookie that is removed when accessed.
* [`Json`] - Automatically serializes values into JSON.
@ -312,20 +311,22 @@ are:
* [`Template`] - Renders a dynamic template using handlebars or Tera.
[`status`]: @api/rocket/response/status/
[`content`]: @api/rocket/response/content/
[`response`]: @api/rocket/response/
[`NamedFile`]: @api/rocket/response/struct.NamedFile.html
[`Content`]: @api/rocket/response/struct.Content.html
[`NamedFile`]: @api/rocket/fs/struct.NamedFile.html
[`Redirect`]: @api/rocket/response/struct.Redirect.html
[`Stream`]: @api/rocket/response/struct.Stream.html
[`Flash`]: @api/rocket/response/struct.Flash.html
[`MsgPack`]: @api/rocket/serde/msgpack/struct.MsgPack.html
[`Template`]: @api/rocket_dyn_templates/struct.Template.html
### Async Streams
The [`stream`] responders allow serving potentially infinite async [`Stream`]s.
The [`stream`] responders allow serving potentially infinite [async `Stream`]s.
A stream can be created from any async `Stream` or `AsyncRead` type, or via
generator syntax using the [`stream!`] macro and its typed equivalents.
generator syntax using the [`stream!`] macro and its typed equivalents. Streams
are the building blocks for unidirectional real-time communication. For
instance, the [`chat` example] uses an [`EventStream`] to implement a real-time,
multi-room chat application using Server-Sent Events (SSE).
The simplest version creates a [`ReaderStream`] from a single `AsyncRead` type.
For example, to stream from a TCP connection, we might write:
@ -372,9 +373,11 @@ how to detect and handle graceful shutdown requests.
[`stream`]: @api/rocket/response/stream/index.html
[`stream!`]: @api/rocket/response/stream/macro.stream.html
[`Stream`]: https://docs.rs/futures/0.3/futures/stream/trait.Stream.html
[async `Stream`]: https://docs.rs/futures/0.3/futures/stream/trait.Stream.html
[`ReaderStream`]: @api/rocket/response/stream/struct.ReaderStream.html
[`TextStream`]: @api/rocket/response/stream/struct.TextStream.html
[`EventStream`]: @api/rocket/response/stream/struct.EventStream.html
[`chat` example]: @example/chat
### JSON
@ -482,7 +485,7 @@ including how to customize a template engine to add custom helpers and filters.
The [templating example](@example/templating) uses both Tera and Handlebars
templating to implement the same application.
[configurable]: ../configuration/#extras
[configurable]: ../configuration
## Typed URIs
@ -713,14 +716,14 @@ uri!(person(id = 100, details = "a/b/c"));
See the [`FromUriParam`] documentation for further details.
[`Origin`]: @api/rocket/http/uri/struct.Origin.html
[`Part`]: @api/rocket/http/uri/trait.Part.html
[`Part`]: @api/rocket/http/uri/fmt/trait.Part.html
[`Uri`]: @api/rocket/http/uri/enum.Uri.html
[`Redirect::to()`]: @api/rocket/response/struct.Redirect.html#method.to
[`uri!`]: @api/rocket/macro.uri.html
[`UriDisplay`]: @api/rocket/http/uri/trait.UriDisplay.html
[`FromUriParam`]: @api/rocket/http/uri/trait.FromUriParam.html
[`Path`]: @api/rocket/http/uri/enum.Path.html
[`Query`]: @api/rocket/http/uri/enum.Query.html
[`Ignorable`]: @api/rocket/http/uri/trait.Ignorable.html
[`UriDisplay`]: @api/rocket/http/uri/fmt/trait.UriDisplay.html
[`FromUriParam`]: @api/rocket/http/uri/fmt/trait.FromUriParam.html
[`Path`]: @api/rocket/http/uri/fmt/enum.Path.html
[`Query`]: @api/rocket/http/uri/fmt/enum.Query.html
[`Ignorable`]: @api/rocket/http/uri/fmt/trait.Ignorable.html
[`UriDisplayPath`]: @api/rocket/derive.UriDisplayPath.html
[`UriDisplayQuery`]: @api/rocket/derive.UriDisplayQuery.html

View File

@ -58,7 +58,7 @@ selected profile doesn't contain a requested values, while values in the
[`Config::figment()`]: @api/rocket/struct.Config.html#method.figment
[`Toml`]: @figment/providers/struct.Toml.html
[`Json`]: @figment/providers/struct.Json.html
[`Figment`]: @api/rocket/struct.Figment.html
[`Figment`]: @figment/struct.Figment.html
[`Deserialize`]: @api/rocket/serde/trait.Deserialize.html
[`LogLevel`]: @api/rocket/config/enum.LogLevel.html
[`Limits`]: @api/rocket/data/struct.Limits.html

View File

@ -150,19 +150,19 @@ color = 'purple'
margin = -6
[[bottom_features]]
title = 'Streams'
text = "Rocket streams all incoming and outgoing data, so size isn't a concern."
title = 'Async Streams'
text = "Create and return potentially infinite async streams of data with ease."
image = 'streams-icon'
url = 'guide/requests/#streaming'
url = 'guide/responses/#async-streams'
button = 'Learn More'
color = 'red'
margin = -29
[[bottom_features]]
title = 'Config Environments'
text = "Configure your application your way for development, staging, and production."
title = 'Config Profiles'
text = "Configure your application your way for debug, release, or anything else!"
image = 'config-icon'
url = 'guide/configuration/#environment'
url = 'guide/configuration/#profiles'
button = 'Learn More'
color = 'yellow'
margin = -3

View File

@ -46,7 +46,7 @@ state's type in the function signature. It works in two easy steps:
value passed into `manage`.
Rocket takes care of the rest! `State` works through Rocket's [request
guards](../../guide/requests/#request-guards). You can call `manage` any number
guards](@guide-v0.3/requests/#request-guards). You can call `manage` any number
of times, as long as each call corresponds to a value of a different type.
As a simple example, consider the following "hit counter" example application:
@ -110,14 +110,14 @@ help: maybe add a call to 'manage' here?
| ^^^^^^^^^^^^^^^^
```
You can read more about managed state in the [guide](../../guide/state/), the
API docs for [manage](@api/rocket/struct.Rocket.html#method.manage), and the API
docs for [State](@api/rocket/struct.State.html).
You can read more about managed state in the [guide](@guide-v0.3/state/), the
API docs for [manage](@api-v0.3/rocket/struct.Rocket.html#method.manage), and the API
docs for [State](@api-v0.3/rocket/struct.State.html).
### Unmounted Routes Lint
A common mistake that new Rocketeers make is forgetting to
[mount](../../guide/overview/#mounting) declared routes. In Rocket v0.2, Rocket
[mount](@guide-v0.3/overview/#mounting) declared routes. In Rocket v0.2, Rocket
adds a _lint_ that results in a compile-time warning for unmounted routes. As a
simple illustration, consider the canonical "Hello, world!" Rocket application
below, and note that we've forgotten to mount the `hello` route:
@ -156,7 +156,7 @@ help: maybe add a call to 'mount' here?
The lint can be disabled selectively per route by adding an
`#[allow(unmounted_route)]` annotation to a given route declaration. It can also
be disabled globally by adding `#![allow(unmounted_route)]`. You can read more
about this lint in the [codegen documentation](@api/rocket_codegen/index.html).
about this lint in the [codegen documentation](@api-v0.3/rocket_codegen/index.html).
### Configuration via Environment Variables
@ -174,7 +174,7 @@ Configuration parameters set via environment variables take precedence over
parameters set via the `Rocket.toml` configuration file. Note that _any_
parameter can be set via an environment variable, include _extras_. For more
about configuration in Rocket, see the [configuration section of the
guide](../../guide/overview#configuration).
guide](@guide-v0.3/overview#configuration).
### And Plenty More!
@ -391,4 +391,4 @@ contributing!
Not already using Rocket? Rocket is extensively documented, making it easy for
you to start writing your web applications in Rocket! See the
[overview](../../overview) or start writing code immediately by reading through
[the guide](../../guide).
[the guide](@guide-v0.3).

View File

@ -21,7 +21,7 @@ sacrificing flexibility or type safety. All with minimal code.
Not already using Rocket? Join the thousands of users and dozens of companies
happily using Rocket today! Rocket's extensive documentation makes it easy. Get
started now by [reading through the guide](../../guide) or learning more from
started now by [reading through the guide](@guide-v0.3) or learning more from
[the overview](../../overview).
## What's New?
@ -61,8 +61,8 @@ limitations and abilities, and includes implementation examples. I encourage you
to experiment with fairings and report your experiences. As always, feedback is
instrumental in solidifying a robust design.
[`Fairing`]: @api/rocket/fairing/trait.Fairing.html
[fairings guide]: ../../guide/fairings
[`Fairing`]: @api-v0.3/rocket/fairing/trait.Fairing.html
[fairings guide]: @guide-v0.3/fairings
### Native TLS Support
@ -88,7 +88,7 @@ For more details on Rocket's TLS support, see the [configuring TLS] section of
the guide.
[`rustls`]: https://github.com/ctz/rustls
[configuring TLS]: ../../guide/configuration/#configuring-tls
[configuring TLS]: @guide-v0.3/configuration/#configuring-tls
### Private Cookies
@ -126,11 +126,11 @@ automatically generates a fresh key at launch.
For more details on private cookies, see the [private cookies] section of the
guide.
[`Cookies`]: @api/rocket/http/enum.Cookies.html
[`get_private`]: @api/rocket/http/enum.Cookies.html#method.get_private
[`add_private`]: @api/rocket/http/enum.Cookies.html#method.add_private
[`remove_private`]: @api/rocket/http/enum.Cookies.html#method.remove_private
[private cookies]: ../../guide/requests/#private-cookies
[`Cookies`]: @api-v0.3/rocket/http/enum.Cookies.html
[`get_private`]: @api-v0.3/rocket/http/enum.Cookies.html#method.get_private
[`add_private`]: @api-v0.3/rocket/http/enum.Cookies.html#method.add_private
[`remove_private`]: @api-v0.3/rocket/http/enum.Cookies.html#method.remove_private
[private cookies]: @guide-v0.3/requests/#private-cookies
### Form Field Naming
@ -163,9 +163,9 @@ struct External {
Rocket will automatically match the form field named "type" to the structure
field named `api_type`. For more details on form field naming, see the [field
renaming](../../guide/requests/#field-renaming) section of the guide.
renaming](@guide-v0.3/requests/#field-renaming) section of the guide.
[`FromForm`]: @api/rocket/request/trait.FromForm.html
[`FromForm`]: @api-v0.3/rocket/request/trait.FromForm.html
### And Plenty More!
@ -189,7 +189,7 @@ following new features:
* [`Response::content_type()`] was added to retrieve the Content-Type header
of a response.
* Data limits on incoming data are [now
configurable](../../guide/configuration/#data-limits).
configurable](@guide-v0.3/configuration/#data-limits).
* [`Request::limits()`] was added to retrieve incoming data limits.
* Responders may dynamically adjust their response based on the incoming
request.
@ -211,28 +211,28 @@ following new features:
* The [`NotFound`] responder was added for simple **404** response
construction.
[`MsgPack`]: @api/rocket_contrib/msgpack/struct.MsgPack.html
[`Rocket::launch()`]: @api/rocket/struct.Rocket.html#method.launch
[`LaunchError`]: @api/rocket/error/struct.LaunchError.html
[Default rankings]: @api/rocket/struct.Route.html
[`&Route`]: @api/rocket/struct.Route.html
[`Route`]: @api/rocket/struct.Route.html
[`Accept`]: @api/rocket/http/struct.Accept.html
[`Request::accept()`]: @api/rocket/struct.Request.html#method.accept
[`contrib`]: @api/rocket_contrib/
[`Rocket::routes()`]: @api/rocket/struct.Rocket.html#method.routes
[`Response::body_string()`]: @api/rocket/struct.Response.html#method.body_string
[`Response::body_bytes()`]: @api/rocket/struct.Response.html#method.body_bytes
[`Response::content_type()`]: @api/rocket/struct.Response.html#method.content_type
[`Request::guard()`]: @api/rocket/struct.Request.html#method.guard
[`Request::limits()`]: @api/rocket/struct.Request.html#method.limits
[`Request::route()`]: @api/rocket/struct.Request.html#method.route
[`Config`]: @api/rocket/struct.Config.html
[`Cookies`]: @api/rocket/http/enum.Cookies.html
[`Config::get_datetime()`]: @api/rocket/struct.Config.html#method.get_datetime
[`LenientForm`]: @api/rocket/request/struct.LenientForm.html
[configuration parameters]: @api/rocket/config/index.html#environment-variables
[`NotFound`]: @api/rocket/response/status/struct.NotFound.html
[`MsgPack`]: @api-v0.3/rocket_contrib/msgpack/struct.MsgPack.html
[`Rocket::launch()`]: @api-v0.3/rocket/struct.Rocket.html#method.launch
[`LaunchError`]: @api-v0.3/rocket/error/struct.LaunchError.html
[Default rankings]: @api-v0.3/rocket/struct.Route.html
[`&Route`]: @api-v0.3/rocket/struct.Route.html
[`Route`]: @api-v0.3/rocket/struct.Route.html
[`Accept`]: @api-v0.3/rocket/http/struct.Accept.html
[`Request::accept()`]: @api-v0.3/rocket/struct.Request.html#method.accept
[`contrib`]: @api-v0.3/rocket_contrib/
[`Rocket::routes()`]: @api-v0.3/rocket/struct.Rocket.html#method.routes
[`Response::body_string()`]: @api-v0.3/rocket/struct.Response.html#method.body_string
[`Response::body_bytes()`]: @api-v0.3/rocket/struct.Response.html#method.body_bytes
[`Response::content_type()`]: @api-v0.3/rocket/struct.Response.html#method.content_type
[`Request::guard()`]: @api-v0.3/rocket/struct.Request.html#method.guard
[`Request::limits()`]: @api-v0.3/rocket/struct.Request.html#method.limits
[`Request::route()`]: @api-v0.3/rocket/struct.Request.html#method.route
[`Config`]: @api-v0.3/rocket/struct.Config.html
[`Cookies`]: @api-v0.3/rocket/http/enum.Cookies.html
[`Config::get_datetime()`]: @api-v0.3/rocket/struct.Config.html#method.get_datetime
[`LenientForm`]: @api-v0.3/rocket/request/struct.LenientForm.html
[configuration parameters]: @api-v0.3/rocket/config/index.html#environment-variables
[`NotFound`]: @api-v0.3/rocket/response/status/struct.NotFound.html
## Breaking Changes
@ -267,9 +267,9 @@ In addition to new features, Rocket saw the following improvements:
* The format of a request is always logged when available.
[`yansi`]: https://crates.io/crates/yansi
[`Request`]: @api/rocket/struct.Request.html
[`State`]: @api/rocket/struct.State.html
[`Config`]: @api/rocket/struct.Config.html
[`Request`]: @api-v0.3/rocket/struct.Request.html
[`State`]: @api-v0.3/rocket/struct.State.html
[`Config`]: @api-v0.3/rocket/struct.Config.html
## What's Next?
@ -300,7 +300,7 @@ and usability. The following major features are planned:
type-checks. In the next release, a `url!` macro will be available to
automatically generate URLs for routes in a type-safe manner.
[much wordier than necessary]: ../../guide/state/#databases
[much wordier than necessary]: @guide-v0.3/state/#databases
## Contributors to v0.3

View File

@ -26,7 +26,7 @@ Friday, November 9th for the general release!
[GitHub issue tracker]: https://github.com/SergioBenitez/Rocket/issues
[API docs]: https://api.rocket.rs/v0.4/rocket/
[guide]: ../../guide
[guide]: @guide-v0.4
[CHANGELOG]: https://github.com/SergioBenitez/Rocket/tree/v0.4/CHANGELOG.md#version-040-rc-oct-31-2018
## About Rocket
@ -37,5 +37,5 @@ sacrificing flexibility or type safety. All with minimal code.
Not already using Rocket? Join the tens of thousands of users and hundreds of
companies happily using Rocket today! Rocket's extensive documentation makes it
easy. Get started now by [reading through the guide](../../guide) or learning
easy. Get started now by [reading through the guide](@guide-v0.4) or learning
more from [the overview](../../overview).

View File

@ -32,8 +32,8 @@ We're excited for your feedback, and we look forward to seeing you again on
Wednesday, December 5th for the general release!
[GitHub issue tracker]: https://github.com/SergioBenitez/Rocket/issues
[API docs]: https://api.rocket.rs/v0.4/rocket/
[guide]: ../../guide
[API docs]: @api-v0.4
[guide]: @guide-v0.4
[CHANGELOG]: https://github.com/SergioBenitez/Rocket/tree/v0.4/CHANGELOG.md#version-040-rc2-nov-30-2018
## About Rocket
@ -44,5 +44,5 @@ sacrificing flexibility or type safety. All with minimal code.
Not already using Rocket? Join the tens of thousands of users and hundreds of
companies happily using Rocket today! Rocket's extensive documentation makes it
easy. Get started now by [reading through the guide](../../guide) or learning
easy. Get started now by [reading through the guide](@guide-v0.4) or learning
more from [the overview](../../overview).

View File

@ -23,7 +23,7 @@ without sacrificing flexibility or type safety.
Not already using Rocket? Join the tens of thousands of users and hundreds of
companies happily using Rocket today! Rocket's extensive documentation makes it
easy. Get started now by [reading through the guide](../../guide) or learning
easy. Get started now by [reading through the guide](@guide-v0.4) or learning
more from [the overview](../../overview).
## What's New?
@ -151,8 +151,8 @@ We recommend that `uri!` is exclusively used when constructing route URIs. For
more information on typed URIs, see the new [Typed URIs] guide section and the
[`uri!`] macro documentation.
[`uri!`]: @api/rocket_codegen/macro.uri.html
[Typed URIs]: ../../guide/responses/#typed-uris
[`uri!`]: @api-v0.4/rocket_codegen/macro.uri.html
[Typed URIs]: @guide-v0.4/responses/#typed-uris
### Database Support
@ -197,8 +197,8 @@ fn get_logs(conn: LogsDbConn, id: usize) -> Result<Logs> {
For more information on Rocket's database support, see the new [Database] guide
section and the [`rocket_contrib::databases`] module documentation.
[Database]: ../../guide/state/#databases
[`rocket_contrib::databases`]: @api/rocket_contrib/databases/index.html
[Database]: @guide-v0.4/state/#databases
[`rocket_contrib::databases`]: @api-v0.4/rocket_contrib/databases/index.html
### Revamped Queries
@ -241,10 +241,10 @@ and [`FromFormValue`] can be derived.
For more details on handling query strings, see the new [Query Strings] guide
section and the updated [`route` attribute] documentation.
[`FromFormValue`]: @api/rocket/request/trait.FromFormValue.html
[`FromQuery`]: @api/rocket/request/trait.FromQuery.html
[`route` attribute]: @api/rocket_codegen/attr.get.html
[Query Strings]: ../../guide/requests/#query-strings
[`FromFormValue`]: @api-v0.4/rocket/request/trait.FromFormValue.html
[`FromQuery`]: @api-v0.4/rocket/request/trait.FromQuery.html
[`route` attribute]: @api-v0.4/rocket_codegen/attr.get.html
[Query Strings]: @guide-v0.4/requests/#query-strings
[#608]: https://github.com/SergioBenitez/Rocket/issues/608
### Stateful Handlers
@ -269,8 +269,8 @@ fn main() {
We encourage users to explore the new `Handler` API and contribute libraries
with pluggable handlers! For more details, see the [`Handler`] documentation.
[`Handler`]: @api/rocket/trait.Handler.html
[`StaticFiles`]: @api/rocket_contrib/serve/struct.StaticFiles.html
[`Handler`]: @api-v0.4/rocket/trait.Handler.html
[`StaticFiles`]: @api-v0.4/rocket_contrib/serve/struct.StaticFiles.html
### Responder Derive
@ -319,9 +319,9 @@ headers to the response (here, `ContentType`).
For more on using the `Responder` derive, see the new [Custom Responders] guide
section and the [`Responder` derive] documentation.
[Custom Responders]: ../../guide/responses/#custom-responders
[`Responder` derive]: @api/rocket_codegen/derive.Responder.html
[`Responder`]: @api/rocket/response/trait.Responder.html
[Custom Responders]: @guide-v0.4/responses/#custom-responders
[`Responder` derive]: @api-v0.4/rocket_codegen/derive.Responder.html
[`Responder`]: @api-v0.4/rocket/response/trait.Responder.html
### Live Template Reloading
@ -465,17 +465,17 @@ In addition to new features, Rocket saw the following improvements:
* The `cookie` dependency was updated to `0.11`.
[Tera templates example]: @github/examples/tera_templates
[`FormItems`]: @api/rocket/request/enum.FormItems.html
[`Config::active()`]: @api/rocket/config/struct.Config.html#method.active
[`Flash`]: @api/rocket/response/struct.Flash.html
[`AdHoc::on_attach()`]: @api/rocket/fairing/struct.AdHoc.html#method.on_attach
[`AdHoc::on_launch()`]: @api/rocket/fairing/struct.AdHoc.html#method.on_launch
[`Config::root_relative()`]: @api/rocket/struct.Config.html#method.root_relative
[`Config::tls_enabled()`]: @api/rocket/struct.Config.html#method.tls_enabled
[`rocket_codegen`]: @api/rocket_codegen/index.html
[`FromParam`]: @api/rocket/request/trait.FromParam.html
[`FromFormValue`]: @api/rocket/request/trait.FromFormValue.html
[`Data`]: @api/rocket/struct.Data.html
[`FormItems`]: @api-v0.4/rocket/request/enum.FormItems.html
[`Config::active()`]: @api-v0.4/rocket/config/struct.Config.html#method.active
[`Flash`]: @api-v0.4/rocket/response/struct.Flash.html
[`AdHoc::on_attach()`]: @api-v0.4/rocket/fairing/struct.AdHoc.html#method.on_attach
[`AdHoc::on_launch()`]: @api-v0.4/rocket/fairing/struct.AdHoc.html#method.on_launch
[`Config::root_relative()`]: @api-v0.4/rocket/struct.Config.html#method.root_relative
[`Config::tls_enabled()`]: @api-v0.4/rocket/struct.Config.html#method.tls_enabled
[`rocket_codegen`]: @api-v0.4/rocket_codegen/index.html
[`FromParam`]: @api-v0.4/rocket/request/trait.FromParam.html
[`FromFormValue`]: @api-v0.4/rocket/request/trait.FromFormValue.html
[`Data`]: @api-v0.4/rocket/struct.Data.html
[`Form`]: https://api.rocket.rs/v0.4/rocket/request/struct.Form.html
[`LenientForm`]: https://api.rocket.rs/v0.4/rocket/request/struct.LenientForm.html

View File

@ -68,7 +68,7 @@ fn login(user_form: Form<UserLogin>) -> String {
```
The `login` route above says that it expects `data` of type `Form<UserLogin>` in
the `user_form` parameter. The [Form](@api/rocket/request/struct.Form.html) type
the `user_form` parameter. The [Form](@api/rocket/form/struct.Form.html) type
is a built-in Rocket type that knows how to parse web forms into structures.
Rocket will automatically attempt to parse the request body into the `Form` and
call the `login` handler if parsing succeeds. Other built-in `FromData` types