File: unused-async.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, forky, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (62 lines) | stat: -rw-r--r-- 1,226 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//@ edition:2018
#![deny(unused_must_use)]


#[must_use]
async fn foo() -> i32 {
    1
}

#[must_use]
fn bar() -> impl std::future::Future<Output=i32> {
    async {
        42
    }
}

async fn baz() -> i32 {
    0
}

struct Wowee {}

impl Wowee {
    #[must_use]
    async fn test_method() -> i32 {
        1
    }
}

async fn test() {
    foo(); //~ ERROR unused return value of `foo` that must be used
    //~^ ERROR unused implementer of `Future` that must be used
    foo().await; //~ ERROR unused output of future returned by `foo` that must be used
    bar(); //~ ERROR unused return value of `bar` that must be used
    //~^ ERROR unused implementer of `Future` that must be used
    bar().await; // ok, it's not an async fn
    baz(); //~ ERROR unused implementer of `Future` that must be used
    baz().await; // ok
}

/* FIXME(guswynn) update this test when async-fn-in-traits works
trait Doer {
    #[must_use]
    async fn test_trait_method() -> i32;
    WARNING must_use
    async fn test_other_trait() -> i32;
}

impl Doer for Wowee {
    async fn test_trait_method() -> i32 {
        1
    }
    #[must_use]
    async fn test_other_trait() -> i32 {
        WARNING must_use
        1
    }
}
*/

fn main() {
}