Skip to content

Commit

Permalink
Put third party crates behind feature flags (#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiemh authored Feb 22, 2024
1 parent 2601f04 commit 626431f
Show file tree
Hide file tree
Showing 11 changed files with 123 additions and 33 deletions.
78 changes: 78 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Continuous integration

on:
workflow_dispatch:
push:
branches:
- main
pull_request:
merge_group:

defaults:
run:
shell: bash

jobs:

format:
name: Check format
runs-on: ubuntu-latest
steps:

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt

- name: Checkout sources
uses: actions/checkout@v4

- name: Check format
run: cargo fmt --all --check

check:
name: Check workspace
runs-on: ubuntu-latest
steps:

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Checkout sources
uses: actions/checkout@v4

- name: Check workspace
run: cargo check --workspace

clippy:
name: Check clippy
runs-on: ubuntu-latest
steps:

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy

- name: Checkout sources
uses: actions/checkout@v4

- name: Run clippy
run: cargo clippy --all-targets --all-features --tests -- -D warnings

test:
name: Run tests
runs-on: ubuntu-latest
steps:

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Checkout sources
uses: actions/checkout@v4

- name: Test with no features
run: cargo test --workspace

- name: Test with all features
run: cargo test --all-features --workspace
17 changes: 10 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,21 @@ categories = ["encoding"]
[workspace]
members = ["derive"]

[features]
default = []

[dependencies]
bincode = "1.3.3"
chrono = { version = "0.4.26", features = ["serde"] }
chrono = { version = "0.4.26", features = ["serde"], optional = true }
derive = { version = "0.5.0", package = "revision-derive", path = "derive" }
geo = { version = "0.26.0", features = ["use-serde"] }
ordered-float = "3"
regex = "1.9.3"
rust_decimal = "1.31.0"
geo = { version = "0.26.0", features = ["use-serde"], optional = true }
ordered-float = { version = "3", optional = true }
regex = { version = "1.9.3", optional = true }
roaring = { version = "0.10.2", features = ["serde"], optional = true }
rust_decimal = { version = "1.31.0", optional = true }
serde = "1.0.183"
thiserror = "1.0.44"
uuid = "1.4.1"
roaring = { version = "0.10.2", features = ["serde"] }
uuid = { version = "1.4.1", optional = true }

[dev-dependencies]
rand = "0.8.5"
18 changes: 8 additions & 10 deletions src/implementations/chrono.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#![cfg(feature = "chrono")]

use super::super::Error;
use super::super::Revisioned;
use chrono::{offset::TimeZone, DateTime, Utc, NaiveDate, Datelike, NaiveTime, Timelike};
use chrono::{offset::TimeZone, DateTime, Datelike, NaiveDate, NaiveTime, Timelike, Utc};

impl Revisioned for DateTime<Utc> {
#[inline]
Expand Down Expand Up @@ -74,10 +76,10 @@ impl Revisioned for NaiveTime {

#[cfg(test)]
mod tests {
use chrono::{NaiveDate, NaiveTime};
use super::DateTime;
use super::Revisioned;
use super::Utc;
use chrono::{NaiveDate, NaiveTime};

#[test]
fn test_datetime_min() {
Expand Down Expand Up @@ -107,8 +109,7 @@ mod tests {
let mut mem: Vec<u8> = vec![];
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 3);
let out =
<NaiveDate as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
let out = <NaiveDate as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}

Expand All @@ -118,8 +119,7 @@ mod tests {
let mut mem: Vec<u8> = vec![];
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 5);
let out =
<NaiveDate as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
let out = <NaiveDate as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}

Expand All @@ -129,8 +129,7 @@ mod tests {
let mut mem: Vec<u8> = vec![];
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 4);
let out =
<NaiveTime as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
let out = <NaiveTime as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}

Expand All @@ -140,8 +139,7 @@ mod tests {
let mut mem: Vec<u8> = vec![];
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 8);
let out =
<NaiveTime as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
let out = <NaiveTime as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}
}
2 changes: 2 additions & 0 deletions src/implementations/decimal.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(feature = "rust_decimal")]

use super::super::Error;
use super::super::Revisioned;
use rust_decimal::Decimal;
Expand Down
2 changes: 2 additions & 0 deletions src/implementations/geo.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(feature = "geo")]

use super::super::Error;
use super::super::Revisioned;
use bincode::Options;
Expand Down
13 changes: 6 additions & 7 deletions src/implementations/notnan.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(feature = "ordered-float")]

use super::super::Error;
use super::super::Revisioned;
use ordered_float::{Float, NotNan};
Expand All @@ -13,10 +15,8 @@ where

#[inline]
fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
Ok(NotNan::new(
T::deserialize_revisioned(reader)?).map_err(|e|
Error::Deserialize(format!("{:?}", e))
)?)
NotNan::new(T::deserialize_revisioned(reader)?)
.map_err(|e| Error::Deserialize(format!("{:?}", e)))
}

fn revision() -> u16 {
Expand All @@ -28,16 +28,15 @@ where
mod tests {

use super::Revisioned;
use ordered_float::NotNan;
use ordered_float::NotNan;

#[test]
fn test_wrapping() {
let val: NotNan<f32> = NotNan::new(f32::MAX).unwrap();
let mut mem: Vec<u8> = vec![];
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 4);
let out =
<NotNan<f32> as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
let out = <NotNan<f32> as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}
}
2 changes: 2 additions & 0 deletions src/implementations/regex.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(feature = "regex")]

use super::super::Error;
use super::super::Revisioned;
use bincode::Options;
Expand Down
2 changes: 2 additions & 0 deletions src/implementations/roaring.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(feature = "roaring")]

use super::super::Error;
use super::super::Revisioned;
use roaring::{RoaringBitmap, RoaringTreemap};
Expand Down
17 changes: 8 additions & 9 deletions src/implementations/trees.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ use std::collections::HashSet;
use std::hash::BuildHasher;
use std::hash::Hash;

impl<K: Revisioned + Eq + Hash, V: Revisioned, S: BuildHasher + Default> Revisioned for HashMap<K, V, S> {
impl<K: Revisioned + Eq + Hash, V: Revisioned, S: BuildHasher + Default> Revisioned
for HashMap<K, V, S>
{
#[inline]
fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
self.len().serialize_revisioned(writer)?;
Expand Down Expand Up @@ -147,9 +149,9 @@ mod tests {

use super::BTreeMap;
use super::BTreeSet;
use super::BinaryHeap;
use super::HashMap;
use super::HashSet;
use super::BinaryHeap;
use super::Revisioned;

#[test]
Expand Down Expand Up @@ -189,8 +191,7 @@ mod tests {
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 11);
let out =
<HashSet<String> as Revisioned>::deserialize_revisioned(&mut mem.as_slice())
.unwrap();
<HashSet<String> as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}

Expand All @@ -203,8 +204,7 @@ mod tests {
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 11);
let out =
<BTreeSet<String> as Revisioned>::deserialize_revisioned(&mut mem.as_slice())
.unwrap();
<BTreeSet<String> as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
assert_eq!(val, out);
}

Expand All @@ -216,9 +216,8 @@ mod tests {
let mut mem: Vec<u8> = vec![];
val.serialize_revisioned(&mut mem).unwrap();
assert_eq!(mem.len(), 11);
let out =
<BinaryHeap<String> as Revisioned>::deserialize_revisioned(&mut mem.as_slice())
.unwrap();
let out = <BinaryHeap<String> as Revisioned>::deserialize_revisioned(&mut mem.as_slice())
.unwrap();
assert_eq!(val.into_sorted_vec(), out.into_sorted_vec());
}
}
2 changes: 2 additions & 0 deletions src/implementations/uuid.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(feature = "uuid")]

use super::super::Error;
use super::super::Revisioned;
use uuid::Uuid;
Expand Down
3 changes: 3 additions & 0 deletions tests/test.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#![allow(clippy::excessive_precision)]
#![allow(clippy::box_collection)]

use revision::revisioned;
use revision::Error;
use revision::Revisioned;
Expand Down

0 comments on commit 626431f

Please sign in to comment.