Skip to content

Commit c8e2118

Browse files
committed
Rework state example to put Arc inside State
1 parent b7e30fe commit c8e2118

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

examples/state.rs

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,33 @@
11
use std::sync::atomic::{AtomicU32, Ordering};
22
use std::sync::Arc;
33

4+
#[derive(Clone)]
45
struct State {
5-
value: AtomicU32,
6+
value: Arc<AtomicU32>,
67
}
78

89
impl State {
910
fn new() -> Self {
1011
Self {
11-
value: AtomicU32::new(0),
12+
value: Arc::new(AtomicU32::new(0)),
1213
}
1314
}
1415
}
1516

1617
#[async_std::main]
1718
async fn main() -> tide::Result<()> {
1819
tide::log::start();
19-
let mut app = tide::with_state(Arc::new(State::new()));
20-
app.at("/")
21-
.get(|req: tide::Request<Arc<State>>| async move {
22-
let state = req.state();
23-
let value = state.value.load(Ordering::Relaxed);
24-
Ok(format!("{}\n", value))
25-
});
26-
app.at("/inc")
27-
.get(|req: tide::Request<Arc<State>>| async move {
28-
let state = req.state();
29-
let value = state.value.fetch_add(1, Ordering::Relaxed) + 1;
30-
Ok(format!("{}\n", value))
31-
});
20+
let mut app = tide::with_state(State::new());
21+
app.at("/").get(|req: tide::Request<State>| async move {
22+
let state = req.state();
23+
let value = state.value.load(Ordering::Relaxed);
24+
Ok(format!("{}\n", value))
25+
});
26+
app.at("/inc").get(|req: tide::Request<State>| async move {
27+
let state = req.state();
28+
let value = state.value.fetch_add(1, Ordering::Relaxed) + 1;
29+
Ok(format!("{}\n", value))
30+
});
3231
app.listen("127.0.0.1:8080").await?;
3332
Ok(())
3433
}

0 commit comments

Comments
 (0)