pub struct MeasureOpts {
pub fields: HashMap<String, Value>,
pub dimensions: HashMap<String, String>,
pub event_id: Option<String>,
}Fields§
§fields: HashMap<String, Value>§dimensions: HashMap<String, String>§event_id: Option<String>Implementations§
Source§impl MeasureOpts
impl MeasureOpts
Sourcepub fn new(
dims: impl IntoIterator<Item = (impl Into<String>, impl Into<String>)>,
) -> Self
pub fn new( dims: impl IntoIterator<Item = (impl Into<String>, impl Into<String>)>, ) -> Self
Examples found in repository?
examples/test_sdk.rs (line 57)
11async fn main() {
12 let dimensions: HashMap<String, String> = [
13 ("service".into(), "api".into()),
14 ("region".into(), "eu".into()),
15 ]
16 .into();
17
18 let client = Client::new(Config {
19 api_key: API_KEY.into(),
20 sli_id: SLI_ID.into(),
21 base_url: BASE_URL.into(),
22 ..Default::default()
23 })
24 .unwrap();
25
26 println!("LevelOps SDK test — boucle toutes les secondes. Ctrl+C pour arrêter.");
27 let mut i = 0u64;
28 loop {
29 i += 1;
30 let latency = rand_range(20, 500);
31
32 // Usage direct
33 let mut fields = HashMap::new();
34 fields.insert("result".into(), serde_json::Value::String("ok".into()));
35 fields.insert("latency_ms".into(), serde_json::Value::Number(latency.into()));
36
37 client
38 .record(Event {
39 fields,
40 dimensions: dimensions.clone(),
41 ..Default::default()
42 })
43 .await
44 .unwrap();
45 println!("[{i}] record() envoyé");
46
47 // Usage measure (simulation latence)
48 let extra_fields: HashMap<String, serde_json::Value> =
49 [("service_version".into(), serde_json::Value::String("1.0".into()))].into();
50 client
51 .measure(
52 |ctx| async move {
53 sleep(Duration::from_millis(rand_range(50, 300))).await;
54 ctx.set_result(if rand_bool(0.9) { "ok" } else { "error" });
55 Ok(())
56 },
57 MeasureOpts::new(dimensions.clone()).fields(extra_fields),
58 )
59 .await
60 .unwrap();
61 println!("[{i}] measure() terminé");
62
63 sleep(Duration::from_secs(1)).await;
64 }
65}pub fn event_id(self, id: impl Into<String>) -> Self
Sourcepub fn fields(self, f: HashMap<String, Value>) -> Self
pub fn fields(self, f: HashMap<String, Value>) -> Self
Examples found in repository?
examples/test_sdk.rs (line 57)
11async fn main() {
12 let dimensions: HashMap<String, String> = [
13 ("service".into(), "api".into()),
14 ("region".into(), "eu".into()),
15 ]
16 .into();
17
18 let client = Client::new(Config {
19 api_key: API_KEY.into(),
20 sli_id: SLI_ID.into(),
21 base_url: BASE_URL.into(),
22 ..Default::default()
23 })
24 .unwrap();
25
26 println!("LevelOps SDK test — boucle toutes les secondes. Ctrl+C pour arrêter.");
27 let mut i = 0u64;
28 loop {
29 i += 1;
30 let latency = rand_range(20, 500);
31
32 // Usage direct
33 let mut fields = HashMap::new();
34 fields.insert("result".into(), serde_json::Value::String("ok".into()));
35 fields.insert("latency_ms".into(), serde_json::Value::Number(latency.into()));
36
37 client
38 .record(Event {
39 fields,
40 dimensions: dimensions.clone(),
41 ..Default::default()
42 })
43 .await
44 .unwrap();
45 println!("[{i}] record() envoyé");
46
47 // Usage measure (simulation latence)
48 let extra_fields: HashMap<String, serde_json::Value> =
49 [("service_version".into(), serde_json::Value::String("1.0".into()))].into();
50 client
51 .measure(
52 |ctx| async move {
53 sleep(Duration::from_millis(rand_range(50, 300))).await;
54 ctx.set_result(if rand_bool(0.9) { "ok" } else { "error" });
55 Ok(())
56 },
57 MeasureOpts::new(dimensions.clone()).fields(extra_fields),
58 )
59 .await
60 .unwrap();
61 println!("[{i}] measure() terminé");
62
63 sleep(Duration::from_secs(1)).await;
64 }
65}Auto Trait Implementations§
impl Freeze for MeasureOpts
impl RefUnwindSafe for MeasureOpts
impl Send for MeasureOpts
impl Sync for MeasureOpts
impl Unpin for MeasureOpts
impl UnsafeUnpin for MeasureOpts
impl UnwindSafe for MeasureOpts
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more