mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-14 16:03:17 +00:00
Rollup merge of #129034 - henryksloan:coroutine-must-use, r=joboet
Add `#[must_use]` attribute to `Coroutine` trait [Coroutines tracking issue](https://github.com/rust-lang/rust/issues/43122) Like closures (`FnOnce`, `AsyncFn`, etc.), coroutines are lazy and do nothing unless called (resumed). Closure traits like `FnOnce` have `#[must_use = "closures are lazy and do nothing unless called"]` to catch likely bugs for users of APIs that produce them. This PR adds such a `#[must_use]` attribute to `trait Coroutine`.
This commit is contained in:
commit
d4f5a89f6e
@ -69,6 +69,7 @@ pub enum CoroutineState<Y, R> {
|
||||
#[lang = "coroutine"]
|
||||
#[unstable(feature = "coroutine_trait", issue = "43122")]
|
||||
#[fundamental]
|
||||
#[must_use = "coroutines are lazy and do nothing unless resumed"]
|
||||
pub trait Coroutine<R = ()> {
|
||||
/// The type of value this coroutine yields.
|
||||
///
|
||||
|
@ -13,7 +13,8 @@ impl Database {
|
||||
}
|
||||
|
||||
fn check_connection(&self) -> impl Coroutine<Yield = (), Return = ()> + '_ {
|
||||
#[coroutine] move || {
|
||||
#[coroutine]
|
||||
move || {
|
||||
let iter = self.get_connection();
|
||||
for i in iter {
|
||||
yield i
|
||||
@ -23,5 +24,5 @@ impl Database {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
Database.check_connection();
|
||||
let _ = Database.check_connection();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user