pub trait Setted<T>where
T: ToSetValue,{
// Required method
fn set_with_tags<'a>(
&'a self,
key: &'a str,
value: T
) -> MetricBuilder<'_, '_, Set>;
// Provided method
fn set(&self, key: &str, value: T) -> MetricResult<Set> { ... }
}
Expand description
Trait for recording set values.
Sets count the number of unique elements in a group. You can use them to, for example, count the unique visitors to your site.
The following types are valid for sets:
i64
See the Statsd spec for more information.
Required Methods§
Record a single set value with the given key and return a
MetricBuilder
that can be used to add tags to the metric.
Provided Methods§
sourcefn set(&self, key: &str, value: T) -> MetricResult<Set>
fn set(&self, key: &str, value: T) -> MetricResult<Set>
Record a single set value with the given key
Examples found in repository?
examples/nop-sink.rs (line 35)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
fn main() {
let sink = NopMetricSink;
let metrics = StatsdClient::from_sink("example.prefix", sink);
metrics.count("example.counter", 1).unwrap();
metrics.gauge("example.gauge", 5).unwrap();
metrics.gauge("example.gauge", 5.0).unwrap();
metrics.time("example.timer", 32).unwrap();
metrics.time("example.timer", Duration::from_millis(32)).unwrap();
metrics.histogram("example.histogram", 22).unwrap();
metrics
.histogram("example.histogram", Duration::from_nanos(22))
.unwrap();
metrics.histogram("example.histogram", 22.0).unwrap();
metrics.distribution("example.distribution", 33).unwrap();
metrics.distribution("example.distribution", 33.0).unwrap();
metrics.meter("example.meter", 8).unwrap();
metrics.set("example.set", 44).unwrap();
}
More examples
examples/simple-sink.rs (line 37)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
fn main() {
let sock = UdpSocket::bind("0.0.0.0:0").unwrap();
let sink = UdpMetricSink::from(("localhost", DEFAULT_PORT), sock).unwrap();
let metrics = StatsdClient::from_sink("example.prefix", sink);
metrics.count("example.counter", 1).unwrap();
metrics.gauge("example.gauge", 5).unwrap();
metrics.gauge("example.gauge", 5.0).unwrap();
metrics.time("example.timer", 32).unwrap();
metrics.time("example.timer", Duration::from_millis(32)).unwrap();
metrics.histogram("example.histogram", 22).unwrap();
metrics
.histogram("example.histogram", Duration::from_nanos(22))
.unwrap();
metrics.histogram("example.histogram", 22.0).unwrap();
metrics.distribution("example.distribution", 33).unwrap();
metrics.distribution("example.distribution", 33.0).unwrap();
metrics.meter("example.meter", 8).unwrap();
metrics.set("example.set", 44).unwrap();
}
examples/production-sink.rs (line 39)
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
fn main() {
let sock = UdpSocket::bind("0.0.0.0:0").unwrap();
let buffered = BufferedUdpMetricSink::from(("localhost", DEFAULT_PORT), sock).unwrap();
let queued = QueuingMetricSink::from(buffered);
let metrics = StatsdClient::from_sink("example.prefix", queued);
metrics.count("example.counter", 1).unwrap();
metrics.gauge("example.gauge", 5).unwrap();
metrics.gauge("example.gauge", 5.0).unwrap();
metrics.time("example.timer", 32).unwrap();
metrics.time("example.timer", Duration::from_millis(32)).unwrap();
metrics.histogram("example.histogram", 22).unwrap();
metrics
.histogram("example.histogram", Duration::from_nanos(22))
.unwrap();
metrics.histogram("example.histogram", 22.0).unwrap();
metrics.distribution("example.distribution", 33).unwrap();
metrics.distribution("example.distribution", 33.0).unwrap();
metrics.meter("example.meter", 8).unwrap();
metrics.set("example.set", 44).unwrap();
}
examples/unix-socket.rs (line 48)
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
fn main() {
let harness = UnixServerHarness::new("unix-socket-example");
harness.run(
|s: String| println!("Got {} bytes from socket: {}", s.len(), s),
|path| {
let socket = UnixDatagram::unbound().unwrap();
let sink = UnixMetricSink::from(path, socket);
let metrics = StatsdClient::from_sink("example.prefix", sink);
metrics.count("example.counter", 1).unwrap();
metrics.gauge("example.gauge", 5).unwrap();
metrics.gauge("example.gauge", 5.0).unwrap();
metrics.time("example.timer", 32).unwrap();
metrics.time("example.timer", Duration::from_millis(32)).unwrap();
metrics.histogram("example.histogram", 22).unwrap();
metrics
.histogram("example.histogram", Duration::from_nanos(22))
.unwrap();
metrics.histogram("example.histogram", 22.0).unwrap();
metrics.distribution("example.distribution", 33).unwrap();
metrics.distribution("example.distribution", 33.0).unwrap();
metrics.meter("example.meter", 8).unwrap();
metrics.set("example.set", 44).unwrap();
},
);
}
examples/spy-sink.rs (line 40)
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
fn main() {
// Ensure that the sink is dropped, forcing a flush of all buffered metrics.
let rx = {
// Use a buffer size larger than any metrics here so we can demonstrate that
// each metric ends up with a newline (\n) after it.
let (rx, sink) = BufferedSpyMetricSink::with_capacity(None, Some(64));
let metrics = StatsdClient::from_sink("example.prefix", sink);
metrics.count("example.counter", 1).unwrap();
metrics.gauge("example.gauge", 5).unwrap();
metrics.gauge("example.gauge", 5.0).unwrap();
metrics.time("example.timer", 32).unwrap();
metrics.time("example.timer", Duration::from_millis(32)).unwrap();
metrics.histogram("example.histogram", 22).unwrap();
metrics
.histogram("example.histogram", Duration::from_nanos(22))
.unwrap();
metrics.histogram("example.histogram", 22.0).unwrap();
metrics.distribution("example.distribution", 33).unwrap();
metrics.distribution("example.distribution", 33.0).unwrap();
metrics.meter("example.meter", 8).unwrap();
metrics.set("example.set", 44).unwrap();
rx
};
let mut buffer = Vec::new();
while let Ok(v) = rx.try_recv() {
buffer.extend(v);
}
println!("Contents of wrapped buffer:\n{}", String::from_utf8(buffer).unwrap());
}