Segment Analytics Client now available for rust ;)
Add this to your Cargo.toml
:
toml
[dependencies]
segment_analytics = "0.1.2"
and this to your crate root:
rust
extern crate segment_analytics;
Usage with shared instance across thread.
```rust extern crate segmentanalytics; use segmentanalytics::Segment;
let segment = Arc::new(Segment::new(Some(SEGMENTWRITEKEY.to_string())));
let segment1 = segment.clone(); thread::spawn(move || {
let mut properties = HashMap::new(); properties.insert("firstname", "Jimmy"); properties.insert("lastname", "Page");
let mut context = HashMap::new(); context.insert("ip", "134.157.15.3");
segment1.track(Some("anonymous_id"), None, "EventName", Some(properties), Some(context))
segment1.alias("anonymousid", "userid");
let mut traits = HashMap::new(); traits.insert("email", "bill@gates.com"); let mut context = HashMap::new(); context.insert("ip", "134.157.15.3"); segment1.identify(None,Some("user_id"), None, Some(traits), Some(context)); }); ```
Under the hood, one thread worker is in charge of sending the messages to segment endpoint. If the thread drops, a new one is created.
Traits, Properties and Context must implement ToJsonString
(I'm not a fan of current json solutions in rust).
rust
pub trait ToJsonString {
fn to_json_string(&self) -> String;
}
For convenience ToJsonString
is (basically) implemented for HashMap
.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.