3 个版本
使用旧的 Rust 2015
0.1.3 | 2017年10月15日 |
---|---|
0.1.2 | 2016年6月29日 |
0.1.1 | 2016年6月28日 |
#46 in #segment
15KB
297 行
Rust Segment Analytics 客户端
Segment Analytics 客户端 现在支持 Rust ;)
用法
将此添加到你的 Cargo.toml
[dependencies]
segment_analytics = "0.1.3"
并添加此到你的 crate 根目录
extern crate segment_analytics;
示例
跨线程使用共享实例。
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", "[email protected]");
let mut context = HashMap::new();
context.insert("ip", "134.157.15.3");
segment1.identify(None,Some("user_id"), None, Some(traits), Some(context));
});
在底层,有一个线程工作者负责将消息发送到 segment 端点。如果线程崩溃,则会创建一个新的。
特质、属性和上下文必须实现 ToJsonString
(我不是 Rust 中当前 JSON 解决方案的粉丝)。
pub trait ToJsonString {
fn to_json_string(&self) -> String;
}
为了方便起见,ToJsonString
(基本上)为 HashMap
实现了。
许可证
许可协议为以下之一
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确表示,否则,根据 Apache-2.0 许可证定义,你故意提交的任何旨在包含在作品中的贡献,都将按上述方式双许可,不附加任何额外条款或条件。
依赖
~8–17MB
~200K SLoC