#[non_exhaustive]pub struct TimeRange {
pub start: u32,
pub end: u32,
}Expand description
Time range as Unix epoch seconds.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.start: u32Start timestamp (inclusive).
end: u32End timestamp (exclusive).
Implementations§
Source§impl TimeRange
impl TimeRange
Sourcepub fn new(start: u32, end: u32) -> Self
pub fn new(start: u32, end: u32) -> Self
Create a new TimeRange with the given start and end timestamps.
Examples found in repository?
examples/docs_metrics.rs (line 29)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15 let access_token = std::env::var("S2_ACCESS_TOKEN")?;
16 let client = S2::new(S2Config::new(access_token))?;
17
18 // ANCHOR: metrics
19 let now = std::time::SystemTime::now()
20 .duration_since(std::time::UNIX_EPOCH)?
21 .as_secs() as u32;
22 let thirty_days_ago = now - 30 * 24 * 3600;
23 let six_hours_ago = now - 6 * 3600;
24 let hour_ago = now - 3600;
25
26 // Account-level: active basins over the last 30 days
27 let account_metrics = client
28 .get_account_metrics(GetAccountMetricsInput::new(AccountMetricSet::ActiveBasins(
29 TimeRange::new(thirty_days_ago, now),
30 )))
31 .await?;
32
33 // Basin-level: storage usage with hourly resolution
34 let basin_metrics = client
35 .get_basin_metrics(GetBasinMetricsInput::new(
36 "events".parse()?,
37 BasinMetricSet::Storage(TimeRange::new(six_hours_ago, now)),
38 ))
39 .await?;
40
41 // Stream-level: storage for a specific stream
42 let stream_metrics = client
43 .get_stream_metrics(GetStreamMetricsInput::new(
44 "events".parse()?,
45 "user-actions".parse()?,
46 StreamMetricSet::Storage(TimeRange::new(hour_ago, now)),
47 ))
48 .await?;
49 // ANCHOR_END: metrics
50
51 println!(
52 "{:?} {:?} {:?}",
53 account_metrics, basin_metrics, stream_metrics
54 );
55
56 Ok(())
57}Trait Implementations§
Auto Trait Implementations§
impl Freeze for TimeRange
impl RefUnwindSafe for TimeRange
impl Send for TimeRange
impl Sync for TimeRange
impl Unpin for TimeRange
impl UnsafeUnpin for TimeRange
impl UnwindSafe for TimeRange
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more