3 releases
Uses old Rust 2015
0.1.3 | Oct 15, 2017 |
---|---|
0.1.2 | Jun 29, 2016 |
0.1.1 | Jun 28, 2016 |
#43 in #segment
15KB
297 lines
Rust Segment Analytics Client
Segment Analytics Client now available for rust ;)
Usage
Add this to your Cargo.toml
:
[dependencies]
segment_analytics = "0.1.3"
and this to your crate root:
extern crate segment_analytics;
Examples
Usage with shared instance across thread.
extern crate segment_analytics;
use segment_analytics::Segment;
let segment = Arc::new(Segment::new(Some(SEGMENT_WRITE_KEY.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("anonymous_id", "user_id");
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).
pub trait ToJsonString {
fn to_json_string(&self) -> String;
}
For convenience ToJsonString
is (basically) implemented for HashMap
.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
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.
Dependencies
~8–16MB
~194K SLoC