Skip to main content

libdd_sampling/
lib.rs

1// Copyright 2025-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4//! Core sampling logic for Datadog tracing
5//!
6//! This crate provides generic sampling infrastructure including:
7//! - Trait abstractions for trace IDs, attributes, and span properties
8//! - Rate-based sampling algorithms
9//! - Rate limiting functionality
10//! - Glob pattern matching for sampling rules
11//! - Sampling-related constants
12//! - Rule-based sampling with pattern matching
13//! - Agent-provided sampling rates
14//! - Complete Datadog sampler implementation
15
16#![cfg_attr(
17    not(test),
18    deny(
19        clippy::panic,
20        clippy::unwrap_used,
21        clippy::expect_used,
22        clippy::todo,
23        clippy::unimplemented,
24    )
25)]
26
27pub(crate) mod agent_service_sampler;
28pub(crate) mod bounded_byte_cache;
29pub(crate) mod constants;
30pub(crate) mod datadog_sampler;
31pub mod dd_constants;
32pub mod dd_sampling;
33#[cfg(not(feature = "bench-internals"))]
34pub(crate) mod glob_matcher;
35#[cfg(feature = "bench-internals")]
36#[doc(hidden)]
37pub mod glob_matcher;
38pub(crate) mod rate_limiter;
39pub(crate) mod rate_sampler;
40pub(crate) mod rules_sampler;
41pub(crate) mod sampling_rule;
42pub(crate) mod sampling_rule_config;
43pub(crate) mod types;
44
45#[cfg(feature = "v04_span")]
46pub mod v04_span;
47
48// Re-export key types for convenience
49pub use agent_service_sampler::ServicesSampler;
50pub use datadog_sampler::{DatadogSampler, SamplingRulesCallback};
51pub use dd_sampling::{mechanism, priority, SamplingDecision, SamplingMechanism, SamplingPriority};
52pub use sampling_rule::SamplingRule;
53pub use sampling_rule_config::{ParsedSamplingRules, SamplingRuleConfig};
54pub use types::{
55    AttributeFactory, AttributeLike, SamplingData, SpanProperties, TraceIdLike, ValueLike,
56};