Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce the RawStopTime size #142

Merged
merged 1 commit into from
Sep 27, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions src/enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ pub enum LocationType {
/// A specific location on a platform, where passengers can board and/or alight vehicles
BoardingArea,
/// An unknown value
Unknown(i32),
Unknown(i16),
}

fn serialize_i32_as_str<S: Serializer>(s: S, value: i32) -> Result<S::Ok, S::Error> {
fn serialize_i16_as_str<S: Serializer>(s: S, value: i16) -> Result<S::Ok, S::Error> {
s.serialize_str(&value.to_string())
}
impl<'de> Deserialize<'de> for LocationType {
Expand Down Expand Up @@ -69,7 +69,7 @@ impl Serialize for LocationType {
S: Serializer,
{
// Note: for extended route type, we might loose the initial precise route type
serialize_i32_as_str(
serialize_i16_as_str(
serializer,
match self {
LocationType::StopPoint => 0,
Expand Down Expand Up @@ -113,15 +113,15 @@ pub enum RouteType {
/// (extended) Taxi, Cab
Taxi,
/// (extended) any other value
Other(i32),
Other(i16),
}

impl<'de> Deserialize<'de> for RouteType {
fn deserialize<D>(deserializer: D) -> Result<RouteType, D::Error>
where
D: Deserializer<'de>,
{
let i = i32::deserialize(deserializer)?;
let i = i16::deserialize(deserializer)?;

let hundreds = i / 100;
Ok(match (i, hundreds) {
Expand All @@ -147,7 +147,7 @@ impl Serialize for RouteType {
S: Serializer,
{
// Note: for extended route type, we might loose the initial precise route type
serializer.serialize_i32(match self {
serializer.serialize_i16(match self {
RouteType::Tramway => 0,
RouteType::Subway => 1,
RouteType::Rail => 2,
Expand Down Expand Up @@ -178,7 +178,7 @@ pub enum PickupDropOffType {
/// Must coordinate with driver to arrange pickup or drop off.
CoordinateWithDriver,
/// An unknown value not in the specification
Unknown(i32),
Unknown(i16),
}

impl<'de> Deserialize<'de> for PickupDropOffType {
Expand Down Expand Up @@ -207,7 +207,7 @@ impl Serialize for PickupDropOffType {
S: Serializer,
{
// Note: for extended route type, we might loose the initial precise route type
serialize_i32_as_str(
serialize_i16_as_str(
serializer,
match self {
PickupDropOffType::Regular => 0,
Expand Down Expand Up @@ -236,7 +236,7 @@ pub enum ContinuousPickupDropOff {
/// Must coordinate with driver to arrange continuous stopping pickup or drop off.
CoordinateWithDriver,
/// An unknown value not in the specification
Unknown(i32),
Unknown(i16),
}

impl Serialize for ContinuousPickupDropOff {
Expand All @@ -245,7 +245,7 @@ impl Serialize for ContinuousPickupDropOff {
S: Serializer,
{
// Note: for extended route type, we might loose the initial precise route type
serialize_i32_as_str(
serialize_i16_as_str(
serializer,
match self {
ContinuousPickupDropOff::Continuous => 0,
Expand Down Expand Up @@ -319,7 +319,7 @@ pub enum Availability {
/// The service is not available
NotAvailable,
/// An unknown value not in the specification
Unknown(i32),
Unknown(i16),
}

impl<'de> Deserialize<'de> for Availability {
Expand Down Expand Up @@ -347,7 +347,7 @@ impl Serialize for Availability {
S: Serializer,
{
// Note: for extended route type, we might loose the initial precise route type
serialize_i32_as_str(
serialize_i16_as_str(
serializer,
match self {
Availability::InformationNotAvailable => 0,
Expand Down Expand Up @@ -393,7 +393,7 @@ pub enum BikesAllowedType {
/// No bicycles are allowed on this trip
NoBikesAllowed,
/// An unknown value not in the specification
Unknown(i32),
Unknown(i16),
}

impl<'de> Deserialize<'de> for BikesAllowedType {
Expand Down Expand Up @@ -421,7 +421,7 @@ impl Serialize for BikesAllowedType {
S: Serializer,
{
// Note: for extended route type, we might loose the initial precise route type
serialize_i32_as_str(
serialize_i16_as_str(
serializer,
match self {
BikesAllowedType::NoBikeInfo => 0,
Expand Down Expand Up @@ -485,15 +485,15 @@ pub enum Transfers {
///Riders may transfer twice
TwoTransfers,
/// Other transfer values
Other(i32),
Other(i16),
}

impl<'de> Deserialize<'de> for Transfers {
fn deserialize<D>(deserializer: D) -> Result<Transfers, D::Error>
where
D: Deserializer<'de>,
{
let i = Option::<i32>::deserialize(deserializer)?;
let i = Option::<i16>::deserialize(deserializer)?;
Ok(match i {
Some(0) => Transfers::NoTransfer,
Some(1) => Transfers::UniqueTransfer,
Expand All @@ -510,10 +510,10 @@ impl Serialize for Transfers {
S: Serializer,
{
match self {
Transfers::NoTransfer => serialize_i32_as_str(serializer, 0),
Transfers::UniqueTransfer => serialize_i32_as_str(serializer, 1),
Transfers::TwoTransfers => serialize_i32_as_str(serializer, 2),
Transfers::Other(a) => serialize_i32_as_str(serializer, *a),
Transfers::NoTransfer => serialize_i16_as_str(serializer, 0),
Transfers::UniqueTransfer => serialize_i16_as_str(serializer, 1),
Transfers::TwoTransfers => serialize_i16_as_str(serializer, 2),
Transfers::Other(a) => serialize_i16_as_str(serializer, *a),
Transfers::Unlimited => serializer.serialize_none(),
}
}
Expand Down
Loading