Skip to content

Commit 61cebb3

Browse files
raskydpc
authored andcommitted
Add example for nothreads mode
1 parent a696a50 commit 61cebb3

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

Cargo.toml

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ documentation = "https://docs.rs/slog"
1010
homepage = "https://github.com/slog-rs/slog"
1111
repository = "https://github.com/slog-rs/slog"
1212
readme = "README.md"
13+
autoexamples = true
1314

1415
build = "build.rs"
1516

@@ -49,6 +50,10 @@ release_max_level_trace = []
4950
[dependencies]
5051
erased-serde = { version = "0.3", optional = true }
5152

53+
[[example]]
54+
name = "singlethread"
55+
required-features = ["nothreads"]
56+
5257
[package.metadata.docs.rs]
5358
features = ["std", "nested-values", "dynamic-keys"]
5459

Makefile

+3-1
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ longtest:
4848
@i=0; while i=$$((i + 1)) && echo "Iteration $$i" && make test ; do :; done
4949

5050
.PHONY: $(EXAMPLES)
51-
$(EXAMPLES):
51+
named struct-log-self:
5252
cargo build --example $@ $(CARGO_FLAGS)
53+
singlethread:
54+
cargo build --features nothreads --example $@ $(CARGO_FLAGS)
5355

5456
.PHONY: doc
5557
doc: FORCE

examples/singlethread.rs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//#![feature(nothreads)]
2+
#[macro_use]
3+
extern crate slog;
4+
use slog::{Fuse, Logger};
5+
use std::cell::RefCell;
6+
use std::rc::Rc;
7+
8+
mod common;
9+
10+
#[derive(Clone)]
11+
struct NoThreadSafeObject {
12+
val: Rc<RefCell<usize>>,
13+
}
14+
15+
fn main() {
16+
let log = Logger::root(Fuse(common::PrintlnDrain), o!("version" => "2"));
17+
let obj = NoThreadSafeObject {
18+
val: Rc::new(RefCell::new(4)),
19+
};
20+
21+
// Move obj2 into a closure. Since it's !Send, this only works
22+
// with nothreads feature.
23+
let obj2 = obj.clone();
24+
let sublog = log.new(o!("obj.val" => slog::FnValue(move |_| {
25+
format!("{}", obj2.val.borrow())
26+
})));
27+
28+
info!(sublog, "test");
29+
}

0 commit comments

Comments
 (0)