Skip to content

Commit e83f57a

Browse files
committed
feat: improve error message
1 parent 1220c4b commit e83f57a

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "dotenv_config"
3-
version = "0.1.9"
3+
version = "0.2.0"
44
edition = "2021"
55
authors = ["Hengfei Yang <hengfei.yang@gmail.com>"]
66
description = "parse `env` to config struct for Rust"
@@ -20,4 +20,4 @@ askama = "0.12.1" # Type-safe, compiled Jinja-like templates for Rust
2020
convert_case = "0.6.0" # Convert a string to snake_case, kebab-case, or camelCase
2121

2222
[dev-dependencies]
23-
dotenvy = "0.15.6"
23+
dotenvy = "0.15.7"

rust-toolchain.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
[toolchain]
2-
channel = "1.75.0"
2+
channel = "1.82.0"

templates/builder.j2

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl {{ name }} {
2525
help_map
2626
}
2727

28-
pub fn init() -> Result<{{ name }}, &'static str> {
28+
pub fn init() -> Result<{{ name }}, String> {
2929
let mut key: &str;
3030
{% for field in fields %}
3131
{% if field.attr_name.is_empty() %}
@@ -37,7 +37,7 @@ impl {{ name }} {
3737
let {{ field.name }}: Option<{{ field.typ }}> = match std::env::var(key) {
3838
Ok(val) => match val.to_lowercase().parse() {
3939
Ok(v) => Some(v),
40-
Err(_) => Some("".parse().unwrap()),
40+
Err(_) => {return Err(format!("{}: except a value of [{{ field.typ }}]", key));},
4141
},
4242
Err(err) => {
4343
{% if field.attr_default.is_empty() %}
@@ -60,7 +60,10 @@ impl {{ name }} {
6060
};
6161
{% else if field.attr_parse %}
6262
let {{ field.name }}: Option<{{ field.typ }}> = match std::env::var(key) {
63-
Ok(val) => val.parse::<{{ field.typ }}>().ok(),
63+
Ok(val) => match val.parse::<{{ field.typ }}>() {
64+
Ok(v) => Some(v),
65+
Err(_) => {return Err(format!("{}: except a value of [{{ field.typ }}]", key));},
66+
},
6467
Err(_) => {
6568
{% if field.attr_default.is_empty() %}
6669
Default::default().parse::<{{ field.typ }}>().ok()

0 commit comments

Comments
 (0)