parent
f54b99984e
commit
0124b34486
15 changed files with 69 additions and 93 deletions
11
Cargo.toml
11
Cargo.toml
|
@ -17,12 +17,9 @@ all-features = true
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
prim = ["number", "bool"]
|
|
||||||
number = []
|
|
||||||
bool = []
|
|
||||||
vec = []
|
|
||||||
tuple = []
|
|
||||||
low-level = []
|
low-level = []
|
||||||
|
aggs = []
|
||||||
|
structs = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
||||||
|
@ -31,8 +28,8 @@ maintenance = { status = "actively-developed" }
|
||||||
|
|
||||||
[[example]]
|
[[example]]
|
||||||
name = "calc"
|
name = "calc"
|
||||||
required-features = ["vec", "number"]
|
required-features = ["structs"]
|
||||||
|
|
||||||
[[example]]
|
[[example]]
|
||||||
name = "dotenv"
|
name = "dotenv"
|
||||||
required-features = ["vec", "tuple", "low-level"]
|
required-features = ["structs", "low-level"]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use estring::{EString, SepVec};
|
use estring::structs::SepVec;
|
||||||
|
use estring::EString;
|
||||||
|
|
||||||
type PlusVec<T> = SepVec<T, '+'>;
|
type PlusVec<T> = SepVec<T, '+'>;
|
||||||
type MulVec<T> = SepVec<T, '*'>;
|
type MulVec<T> = SepVec<T, '*'>;
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
use estring::{EString, Pair, SepVec, Trim};
|
use estring::low::Trim;
|
||||||
|
use estring::structs::{Pair, SepVec};
|
||||||
|
use estring::EString;
|
||||||
|
|
||||||
const DOTENV_CONTENT: &str = "
|
const DOTENV_CONTENT: &str = "
|
||||||
DATABASE_URL=postgres://user:password@localhost:5432/recipes
|
DATABASE_URL=postgres://user:password@localhost:5432/recipes
|
||||||
|
|
2
src/agg.rs
Normal file
2
src/agg.rs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
//! This module will contain aggregate functions (Sum, Product, etc)
|
||||||
|
//!
|
19
src/core.rs
19
src/core.rs
|
@ -1,25 +1,6 @@
|
||||||
//! Contains the ``EString`` type, as well as the basic implementation of conversions to
|
//! Contains the ``EString`` type, as well as the basic implementation of conversions to
|
||||||
//! string types
|
//! string types
|
||||||
//!
|
//!
|
||||||
#[cfg(any(feature = "number", feature = "bool"))]
|
|
||||||
pub mod prim;
|
|
||||||
#[cfg(any(feature = "number", feature = "bool"))]
|
|
||||||
pub use prim::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "vec")]
|
|
||||||
pub mod vec;
|
|
||||||
#[cfg(feature = "vec")]
|
|
||||||
pub use vec::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "tuple")]
|
|
||||||
pub mod tuple;
|
|
||||||
#[cfg(feature = "tuple")]
|
|
||||||
pub use tuple::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "low-level")]
|
|
||||||
pub mod low;
|
|
||||||
#[cfg(feature = "low-level")]
|
|
||||||
pub use low::*;
|
|
||||||
|
|
||||||
use crate::ParseError;
|
use crate::ParseError;
|
||||||
use std::convert::Infallible;
|
use std::convert::Infallible;
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
//! Contains the implementations to primitive types (number, boolean)
|
|
||||||
//!
|
|
||||||
//! **NOTE**: Require the enabling of the same-name features
|
|
||||||
//!
|
|
||||||
|
|
||||||
#[cfg(feature = "bool")]
|
|
||||||
mod bool;
|
|
||||||
#[cfg(feature = "bool")]
|
|
||||||
pub use self::bool::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "number")]
|
|
||||||
mod number;
|
|
||||||
#[cfg(feature = "number")]
|
|
||||||
pub use self::number::*;
|
|
11
src/lib.rs
11
src/lib.rs
|
@ -31,8 +31,17 @@
|
||||||
#![allow(clippy::module_name_repetitions)]
|
#![allow(clippy::module_name_repetitions)]
|
||||||
#![warn(missing_docs)]
|
#![warn(missing_docs)]
|
||||||
|
|
||||||
pub mod core;
|
|
||||||
mod error;
|
mod error;
|
||||||
|
|
||||||
|
pub mod core;
|
||||||
|
pub mod std;
|
||||||
|
|
||||||
|
#[cfg(feature = "aggs")]
|
||||||
|
pub mod agg;
|
||||||
|
#[cfg(feature = "low-level")]
|
||||||
|
pub mod low;
|
||||||
|
#[cfg(feature = "structs")]
|
||||||
|
pub mod structs;
|
||||||
|
|
||||||
pub use crate::core::*;
|
pub use crate::core::*;
|
||||||
pub use crate::error::ParseError;
|
pub use crate::error::ParseError;
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
use crate::core::EString;
|
use crate::core::EString;
|
||||||
|
|
||||||
//===========================================================================//
|
|
||||||
// TRIM //
|
|
||||||
//===========================================================================//
|
|
||||||
|
|
||||||
/// Wrapper that allow to trim substring before continue
|
/// Wrapper that allow to trim substring before continue
|
||||||
///
|
///
|
||||||
/// **NOTE**: Required the enabling of the `low-level` feature.
|
/// **NOTE**: Required the enabling of the `low-level` feature.
|
8
src/std.rs
Normal file
8
src/std.rs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
//! Contains implementations for standard types (`bool`, numbers, `Option`, etc.)
|
||||||
|
//!
|
||||||
|
|
||||||
|
mod bool;
|
||||||
|
mod number;
|
||||||
|
|
||||||
|
pub use self::bool::*;
|
||||||
|
pub use number::*;
|
|
@ -4,7 +4,6 @@ use crate::core::EString;
|
||||||
macro_rules! from_env_string_numbers_impl {
|
macro_rules! from_env_string_numbers_impl {
|
||||||
($($ty:ty),+$(,)?) => {
|
($($ty:ty),+$(,)?) => {
|
||||||
$(
|
$(
|
||||||
#[cfg(feature = "number")]
|
|
||||||
impl TryFrom<EString> for $ty {
|
impl TryFrom<EString> for $ty {
|
||||||
type Error = <$ty as std::str::FromStr>::Err;
|
type Error = <$ty as std::str::FromStr>::Err;
|
||||||
|
|
10
src/structs.rs
Normal file
10
src/structs.rs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
//! Contains the predefined types (``SepVec``, ``Pair``, etc.)
|
||||||
|
//!
|
||||||
|
//! **NOTE**: Require the enabling the `structs` feature.
|
||||||
|
//!
|
||||||
|
|
||||||
|
mod pair;
|
||||||
|
mod sep_vec;
|
||||||
|
|
||||||
|
pub use pair::*;
|
||||||
|
pub use sep_vec::*;
|
|
@ -1,6 +1,4 @@
|
||||||
//! Contains the implementations to tuple type
|
//! Contains the implementations to pair tuple type
|
||||||
//!
|
|
||||||
//! **NOTE**: Require the enabling of the `tuple` features
|
|
||||||
//!
|
//!
|
||||||
|
|
||||||
use crate::core::EString;
|
use crate::core::EString;
|
||||||
|
@ -87,6 +85,7 @@ where
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use crate::structs::SepVec;
|
||||||
|
|
||||||
type EqPair<A, B> = Pair<A, '=', B>;
|
type EqPair<A, B> = Pair<A, '=', B>;
|
||||||
|
|
||||||
|
@ -108,12 +107,6 @@ mod tests {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "number")]
|
|
||||||
mod vec {
|
|
||||||
use crate::SepVec;
|
|
||||||
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
type LineVec<T> = SepVec<T, '\n'>;
|
type LineVec<T> = SepVec<T, '\n'>;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -128,4 +121,3 @@ hello=bar",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
|
@ -1,7 +1,5 @@
|
||||||
//! Contains the implementations to vec type
|
//! Contains the implementations to vec type
|
||||||
//!
|
//!
|
||||||
//! **NOTE**: Require the enabling of the `vec` features
|
|
||||||
//!
|
|
||||||
|
|
||||||
use crate::core::EString;
|
use crate::core::EString;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
@ -78,6 +76,7 @@ where
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use crate::ParseError;
|
||||||
|
|
||||||
const COMMA: char = ',';
|
const COMMA: char = ',';
|
||||||
const SEMI: char = ';';
|
const SEMI: char = ';';
|
||||||
|
@ -122,11 +121,6 @@ d,e";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "number")]
|
|
||||||
mod numbers {
|
|
||||||
use super::*;
|
|
||||||
use crate::ParseError;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn should_parse_into_num_vec() {
|
fn should_parse_into_num_vec() {
|
||||||
let estr = EString::from("1,2,3,4,5");
|
let estr = EString::from("1,2,3,4,5");
|
||||||
|
@ -147,4 +141,3 @@ d,e";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
Reference in a new issue