Use RudderStack’s Rust SDK to send events to various destinations.
9 minute read
The RudderStack Rust SDK lets you track your customer event data from your Rust applications and send it to your specified destinations via RudderStack.
Check out the GitHub codebase to get a more hands-on understanding of the SDK.
SDK setup requirements
To set up the RudderStack Rust SDK, the following prerequisites must be met:
Once signed up, set up a Rust source in the dashboard. You should be able to see a Write Key for this source, as shown below:
You will also need a data plane URL. Refer to the Glossary for more information on the data plane URL and where to find it.
The Setup tab in the RudderStack dashboard (seen above) has an SDK installation snippet containing both the write key and the data plane URL. You can use it to integrate the Rust SDK into your application.
Installing the Rust SDK
To install the Rust SDK, simply add its crate as a project dependency.
Add the following line to your Cargo.toml file:
rudderanalytics="1.0.0"
Initializing the RudderStack client
To initialize the RudderStack client, run the following code snippet:
Once the RudderStack client is initialized, you can use it to send your customer events.
Sending events
RudderStack does not store or persist the user state in any of the server-side SDKs.
Unlike the client-side SDKs that deal with only a single user at a given time, the server-side SDKs deal with multiple users simultaneously. Therefore, you must specify either user_id or anonymous_id every time while making any API calls supported by the Rust SDK.
Identify
The identify call lets you identify a visiting user and associate them to their actions. It also lets you record the traits about them like their name, email address, etc.
A sample identify call is as shown:
userudderanalytics::message::{Identify,Message};rudder_analytics.send(Message::Identify(Identify{user_id: Some("sample_user_id".to_string()),traits: Some(json!({"name": "Test User","email": "test@user.com",})),..Default::default()})).expect("Identify call failed to send data to RudderStack");
The identify method parameters are as described below:
Field
Type
Presence
Description
user_id
String
Optional, if anonymous_id is already set.
Unique user identifier in your database.
anonymous_id
String
Optional
Sets an identifier for cases when there is no unique user identifier. Either user_id or anonymous_id is required.
traits
Object
Optional
Dictionary of the traits associated with the user, such as name, email, etc.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
Track
The track call lets you record the user actions along with their associated properties. Each user action is called an event.
A sample track call is as shown:
userudderanalytics::message::{Track,Message};rudder_analytics.send(Message::Track(Track{user_id: Some("sample_user_id".to_string()),event: "Test Event".to_owned(),properties: Some(json!({"some property": "some value","some other property": "some other value",})),..Default::default()})).expect("Track call failed to send data to RudderStack");
The track method parameters are as described below:
The following table describes the different track parameters in detail:
Field
Type
Presence
Description
user_id
String
Optional, if anonymous_id is already set.
Unique user identifier in your database.
anonymous_id
String
Optional
Sets an identifier for cases when there is no unique user identifier. Either user_id or anonymous_id is required.
event
String
Required
Name of the event, i.e. the action performed by the user.
properties
Object
Optional
Dictionary of the properties associated with the event.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
Page
The page call allows you to record the page views on your website along with the other relevant information about the viewed page.
RudderStack recommends calling page at least once every page load.
A sample page call is as shown:
userudderanalytics::message::{Page,Message};rudder_analytics.send(Message::Page(Page{user_id: Some("sample_user_id".to_string()),name: "Cart viewed".to_owned(),properties: Some(json!({"some property": "some value","some other property": "some other value",})),..Default::default()})).expect("Page call failed to send data to RudderStack");
The page method parameters are as described below:
Field
Type
Presence
Description
user_id
String
Optional, if anonymous_id is already set.
Unique user identifier in your database.
anonymous_id
String
Optional
Sets an identifier for cases when there is no unique user identifier. Either user_id or anonymous_id is required.
name
String
Required
Name of the viewed page.
properties
Object
Optional
Dictionary of the properties associated with the page view event.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
Screen
The screen method lets you record whenever the user views their mobile screen, along with any additional relevant information about the screen.
The screen call is the mobile equivalent of the page call.
A sample screen call is shown below:
userudderanalytics::message::{Screen,Message};rudder_analytics.send(Message::Screen(Screen{user_id: Some("sample_user_id".to_string()),name: "sample_screen".to_owned(),properties: Some(json!({"some property": "some value","some other property": "some other value",})),..Default::default()})).expect("Screen call failed to send data to RudderStack");
The screen method parameters are as described below:
Field
Type
Presence
Description
user_id
String
Optional, if anonymous_id is already set.
Unique user identifier in your database.
anonymous_id
String
Optional
Sets an identifier for cases when there is no unique user identifier. Either user_id or anonymous_id is required.
name
String
Required
Name of the viewed screen.
properties
Object
Optional
Dictionary of the properties associated with the screen view event.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
Group
The group call lets you associate an identified user to a group - either a company, project or a team and record any custom traits or properties associated with that group.
An identified user can be in more than one group.
A sample group call is as shown:
userudderanalytics::message::{Group,Message};rudder_analytics.send(Message::Group(Group{user_id: Some("sample_user_id".to_string()),group_id: "sample_group_id".to_owned(),traits: Some(json!({"some property": "some value","some other property": "some other value",})),..Default::default()})).expect("Group call failed to send data to RudderStack");
The group method parameters are as described below:
Field
Type
Presence
Description
user_id
String
Optional, if anonymous_id is already set.
Unique user identifier in your database.
anonymous_id
String
Optional
Sets an identifier for cases when there is no unique user identifier. Either user_id or anonymous_id is required.
group_id
String
Required
Unique identifier of the group in your database.
traits
Object
Optional
Dictionary of the traits associated with the group.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
Alias
The alias call lets you merge different identities of a known user.
RudderStack supports sending alias events only to select downstream destinations. Refer to the destination-specific documentation for more details.
A sample alias call is shown below:
userudderanalytics::message::{Alias,Message};rudder_analytics.send(Message::Alias(Alias{user_id: Some("sample_user_id".to_string()),previous_id: "sample_previous_user_id".to_owned(),traits: Some(json!({"some property": "some value","some other property": "some other value",})),..Default::default()})).expect("Alias call failed to send data to RudderStack");
The alias method parameters are as described below:
Field
Type
Presence
Description
user_id
String
Required
Unique user identifier in your database.
previous_id
String
Required
The user’s previous identifier.
traits
Object
Optional
Dictionary of the traits associated with the user, such as name, email, etc.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
Batch
The batch call lets you send multiple user events(of type identify, track, page, screen, group, and alias) in one call.
The batch call accepts a maximum call size of 4 MB.
A sample batch call is as shown:
userudderanalytics::message::{Batch,Message,BatchMessage};rudder_analytics.send(Message::Batch(Batch{batch: vec![BatchMessage::Identify(Identify{user_id: Some("foo".to_string()),traits: Some(json!({})),..Default::default()}),BatchMessage::Track(Track{user_id: Some("bar".to_string()),event: "Bar".to_owned(),properties: Some(json!({})),..Default::default()}),BatchMessage::Track(Track{user_id: Some("baz".to_string()),event: "Baz".to_owned(),properties: Some(json!({})),..Default::default()}),],context: Some(json!({"foo": "bar",})),..Default::default()})).expect("Batch call failed to send data to RudderStack");
The batch method parameters are as described below:
Field
Type
Presence
Description
batch
Vector
Required
Contains one or more event calls of type identify/ track/ page/ screen/ group/ alias.
context
Object
Optional
Dictionary of information providing context about a message. It is not directly related to the API call.
integrations
Object
Optional
Dictionary containing the destinations to be enabled or disabled.
original_timestamp
DateTime
Optional
The timestamp of the event’s occurrence as specified by the user, in ISO 8601 format. If not explicitly specified, the SDK appends the timestamp of the event’s receipt.
Integrations options
The structure of the integrations option is as follows:
integrations: {All: boolean,// Defaults to true
<Destination1>: boolean,<Destination2>: boolean,...}
The following table describes all integrations parameters in detail:
Field
Type
Presence
Description
All
Boolean
Optional
Corresponds to all destinations to which the event is to be sent. Defaults to true. All: false instructs RudderStack to not send the event data to any destinations by default.
<Destination>
Boolean
Optional
Name of the specific destination to which the event should be sent/not sent, depending on the Boolean value assigned to it.
FAQ
Does the Rust SDK support event ordering?
The Rust SDK does not support event ordering by default.
This site uses cookies to improve your experience while you navigate through the website. Out of
these
cookies, the cookies that are categorized as necessary are stored on your browser as they are as
essential
for the working of basic functionalities of the website. We also use third-party cookies that
help
us
analyze and understand how you use this website. These cookies will be stored in your browser
only
with
your
consent. You also have the option to opt-out of these cookies. But opting out of some of these
cookies
may
have an effect on your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This
category only includes cookies that ensures basic functionalities and security
features of the website. These cookies do not store any personal information.
This site uses cookies to improve your experience. If you want to
learn more about cookies and why we use them, visit our cookie
policy. We'll assume you're ok with this, but you can opt-out if you wish Cookie Settings.