Sergio Benitez
12308b403f
Add '#[rocket::launch]' attribute.
...
The attribute is applied everywhere it can be across the codebase and is
the newly preferred method for launching an application. This commit
also makes '#[rocket::main]` stricter by warning when it is applied to
functions other than 'main'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
bc1b90cbdb
Add '#[rocket::main]' attribute and make 'launch()' an 'async fn'.
...
'#[rocket::main]' works like '#[rocket::async_test]', but it uses
tokio's multithreaded scheduler.
2020-07-11 09:24:29 -07:00
Jeb Rosen
e72058de81
Add 'config()' and 'state()' functions directly to 'Rocket' for convenience.
2020-07-11 09:24:29 -07:00
Jeb Rosen
85b3259120
Convert assertions in 'form_kitchen_sink' tests to use macros.
2020-07-11 09:24:29 -07:00
Jeb Rosen
b0238e5110
Make 'Fairing::on_attach()' async.
...
This transitively requires that 'Rocket::inspect()', 'Client::new()',
and 'Client::untracked()' also become async.
2020-07-11 09:24:29 -07:00
Jeb Rosen
dea940c7a8
Defer execution of operations on 'Rocket' until their effects will be
...
observed.
This is a prerequisite for async on_attach fairings. 'Rocket' is now a
builder wrapper around the 'Manifest' type, with operations being
applied when needed by 'launch()', 'Client::new()', or 'inspect()'.
'inspect()' returns an '&Manifest', which now provides the methods that
could be called on an '&Rocket'.
2020-07-11 09:24:29 -07:00
Sergio Benitez
c0c6c79a7f
Use 'async_trait' for 'Responder'.
...
Also:
* Remove 'response::ResultFuture'.
* Re-export 'tokio' and 'futures' from the crate root.
* Make 'ResponseBuilder::sized_body()' and 'async fn'.
* Remove the 'Future' implementation for 'ResponseBuilder'.
* Add 'ResponseBuilder::finalize()' for finalizing the builder.
2020-07-11 09:24:29 -07:00
Sergio Benitez
431b963774
Use 'async_trait' for 'FromRequest'.
...
Removes 'FromRequestAsync'.
2020-07-11 09:24:29 -07:00
Sergio Benitez
48c333721c
Use 'async_trait' for 'Fairing' trait.
...
Also re-exports the 'async_trait' attribute from 'rocket'.
2020-07-11 09:24:29 -07:00
Michael Howell
c9d0af09d6
Use 'AsyncSeek' for sized bodies in 'Response's.
...
In order to avoid making 'ResponseBuilder::sized_body' an asynchronous
function, the seeking is deferred until finalization. 'finalize()' is
replaced with '.await', and 'ResponseBuilder::ok()' is an 'async fn'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
70096c1bd4
Revert on_response lifetimes to more closely match 0.4.
2020-07-11 09:24:29 -07:00
Jeb Rosen
4bb4c61528
Allow implementations of on_request fairings to return a Future that borrows from self, request, and data.
2020-07-11 09:24:29 -07:00
Jeb Rosen
468f4d9314
Simplify FromRequestAsync trait definition.
2020-07-11 09:24:29 -07:00
Paolo Barbolini
003bf77c29
Upgrade to tokio 0.2.0.
...
* Update 'tokio', 'tokio-rustls', and 'hyper'.
* Remove unused dependencies on some `futures-*` crates.
* Rework 'spawn_on', which is now 'serve'.
* Simplify Ctrl-C handling.
2020-07-11 09:24:29 -07:00
Jeb Rosen
7c4cd068d1
Update for rust-lang/rust#64856 .
...
Raise the nightly version to one that accepts '...(format!(...)).await'.
This additionally reverts commit bdbf80f2da
.
2020-07-11 09:24:29 -07:00
Follpvosten
189fd65b17
Add 'Request::local_cache_async' for use in async request guards.
2020-07-11 09:24:29 -07:00
Jeb Rosen
ea06878581
Update 'hyper', 'futures-*-preview', and 'tokio-*' dependencies.
...
Use I/O traits and types from 'tokio-io' as much as possible.
A few adapters only exist in futures-io-preview and use
futures-tokio-compat as a bridge for now.
2020-07-11 09:24:29 -07:00
Jeb Rosen
62a99e9e49
Fix a minor compilation error, possibly caused by rust-lang/rust#64292 .
2020-07-11 09:24:28 -07:00
Jeb Rosen
77a64c73bb
Fix some launch error handling in tests and examples.
2020-07-11 09:24:28 -07:00
Jacob Pratt
cd6a80c230
Implement an API to request a graceful shutdown.
...
Additionally listen for Ctrl-C as a shutdown signal by default.
2020-07-11 09:24:28 -07:00
Jeb Rosen
facc00454c
Re-enable the entire test suite:
...
* Disable compression tests
* Finish migrating all other examples and tests
2020-07-11 09:24:28 -07:00
Jacob Pratt
05426881b0
Use 'File' from 'async_std' instead of from 'tokio'.
...
Additionally pin tokio to '=0.2.0-alpha.2'; before this change cargo
selects '0.2.0-alpha.3' which hyper does not compile against.
2020-07-11 09:24:28 -07:00
Jeb Rosen
1f0577bfc5
Update remaining examples for async.
2020-07-11 09:24:28 -07:00
Jeb Rosen
560f0977d3
Revamp testing system for async.
...
* body_string_wait and body_bytes_wait are removed; use `.await` instead
* `dispatch()` is now an async fn and must be .await-ed
* Add `#[rocket::async_test]` macro, similar in purpose to `tokio::test`
* Tests now use either `rocket::async_test(async { })` or
`#[rocket::async_test]` in order to `.await` the futures returned
from `dispatch()` and `body_{string,bytes}()`
* Update 'test.sh' to reflect the tests that should be passing.
Broken:
* Cloned dispatch and mut_dispatch() with a live previous response now both fail, due to a (partial) check for mutable aliasing in LocalRequest.
* Some tests are still failing and need example-specific changes.
2020-07-11 09:24:28 -07:00
Jacob Pratt
e44c5896b8
Remove stabilized 'async_await' feature gate and update the minimum nightly version.
2020-07-11 09:24:28 -07:00
Jeb Rosen
8c8598b4fd
Fix 'static_files' and 'serve' tests.
2020-07-11 09:24:28 -07:00
Jeb Rosen
094146b929
Update 'fairings' example for async.
2020-07-11 09:24:28 -07:00
Jeb Rosen
bc404f1f6d
Use 'body_string_wait' in all example tests.
2020-07-11 09:24:28 -07:00
Redrield
5e578e9c3b
Upgrade 'msgpack' for async in contrib and examples.
2020-07-11 09:24:28 -07:00
Jeb Rosen
6044961680
Update parts of contrib and associated tests and examples:
...
* json
* templates
* helmet
* databases
* serve
* examples/cookies
* examples/handlebars_templates
* examples/json
* examples/session
* examples/static_files
* examples/tera_templates
2020-07-11 09:24:28 -07:00
Jeb Rosen
5d439bafc0
Convert core to async and add support for async routes.
...
Minimum rustc bump required for rust-lang/rust#61775
2020-07-11 09:24:28 -07:00
gcarq
86d0bdddb2
Replace manual ASCII checks with 'std::char' calls.
2020-06-22 05:07:14 -07:00
Sergio Benitez
e1a3d2b6e8
Fix minor formatting issues in 'todo' example.
2020-06-08 12:18:34 -07:00
Sergio Benitez
a4f5be93ef
Clean up todo example.
2020-06-08 12:12:02 -07:00
Cedric Hutchings
da34b66eb4
Use 'Result's instead of 'bool's in todo example.
2020-06-08 12:11:41 -07:00
Ning Sun
bbad427079
Update 'handlebars' to 3.0.
2020-06-08 11:41:01 -07:00
Giles Cope
ff4b63c0be
Add field renaming to query params example.
2020-03-24 16:21:43 -07:00
Razican
f4bb8bb511
Update depedencies:
...
* contrib: 'rmp-serde', 'tera', 'memcache', 'mysql', 'postgres', 'redis'.
* examples: 'parking-lot', 'rand'
2020-01-19 11:01:11 -08:00
Paolo Barbolini
cd5f96ae15
Update 'uuid', 'unicode-xid', and 'base64' dependencies.
2019-11-30 09:33:14 -08:00
Jeb Rosen
e04bceb81e
Call iter() instead of into_iter() on arrays ( rust-lang/rust#66145 ).
2019-11-28 12:41:26 -08:00
Jacob Pratt
e3c1a4ad3a
Remove use of the 'try_trait' feature.
...
Add the 'try_outcome' macro to replace uses of '?' on 'Outcome'.
2019-09-18 18:43:16 -07:00
Sergio Benitez
2537a1164d
Remove 'Result' specialization. Add 'Debug' responder.
...
This removes all uses of specialization in Rocket.
2019-09-09 21:57:33 -07:00
Sergio Benitez
22da02fa64
Remove double semicolons; silence test warnings.
2019-09-09 16:57:03 -07:00
Pieter Frenssen
1383671090
Do not display 'Error:' on a successful logout in the 'session' example.
2019-08-12 17:39:52 -07:00
Jeb Rosen
3e4f8453ce
Remove use of the 'decl_macro' feature.
...
Also removes one internal use in the 'typed-uris' codegen test.
2019-07-19 11:39:56 -07:00
Jeb Rosen
2f458b5217
Remove dependence on 'decl_macro' in codegen.
...
The generated 'uri' helper macros are now re-exports of 'macro_rules'
macros, made possible by the stable 'uniform_paths' feature.
2019-07-19 11:38:35 -07:00
Jacob Pratt
34a741a26e
Remove use of '!' type in favor of 'Infallible'.
...
This removes the use of and dependence on the 'never_type' feature.
2019-07-09 15:10:51 -07:00
Sergio Benitez
7f2c9f426c
Fix tests for Windows.
2019-07-06 00:59:01 -07:00
Sergio Benitez
da7e022f99
Add Rust 2015 example.
2019-06-25 11:30:43 -07:00
Jeb Rosen
d9f989a496
Migrate all examples to Rust 2018.
2019-06-25 11:30:43 -07:00