strava_wrapper/models/
zone.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ActivityZone {
9 pub score: Option<i32>,
10 pub distribution_buckets: Option<Vec<TimedZoneDistribution>>,
11 #[serde(rename = "type")]
12 pub zone_type: Option<String>,
13 pub sensor_based: Option<bool>,
14 pub points: Option<i32>,
15 pub custom_zones: Option<bool>,
16 pub max: Option<i32>,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct Zones {
22 pub heart_rate: Option<HeartRateZoneRanges>,
23 pub power: Option<PowerZoneRanges>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct HeartRateZoneRanges {
28 pub custom_zones: Option<bool>,
29 pub zones: Option<ZoneRanges>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct PowerZoneRanges {
34 pub zones: Option<ZoneRanges>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct ZoneRanges {
39 pub zones: Option<Vec<ZoneRange>>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct ZoneRange {
44 pub min: Option<i32>,
45 pub max: Option<i32>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct TimedZoneDistribution {
50 pub ranges: Option<Vec<TimedZoneRange>>,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct TimedZoneRange {
55 pub min: Option<i32>,
56 pub max: Option<i32>,
57 pub time: Option<i32>,
58}