#segment #analytics #client #com #thread

segment_analytics

Segment Analytics (segment.com) 的 Rust 客户端 ;)

3 个版本

使用旧的 Rust 2015

0.1.3 2017年10月15日
0.1.2 2016年6月29日
0.1.1 2016年6月28日

#46 in #segment

MIT/Apache

15KB
297

Rust Segment Analytics 客户端

Build Status Crates.io Coverage Status

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-2.0 许可证定义,你故意提交的任何旨在包含在作品中的贡献,都将按上述方式双许可,不附加任何额外条款或条件。

依赖

~8–17MB
~200K SLoC