| Crates.io | winnow_rfc3339 |
| lib.rs | winnow_rfc3339 |
| version | 0.3.0 |
| created_at | 2025-01-22 01:12:29.295606+00 |
| updated_at | 2025-05-30 22:24:48.905306+00 |
| description | Parsing RFC 3339 dates using winnow |
| homepage | |
| repository | https://github.com/soulstompp/winnow-datetime |
| max_upload_size | |
| id | 1526071 |
| size | 46,010 |
This library contains parsers for parsing RFC3339 dates and their various components built off the winnow-datetime parsers
If you have all the data you need, you can just pass along the input directly.
let datetime = opt(datetime)
.parse_next(&mut "2015-06-26 16:43:23+0200"));
// the above will give you:
Some(DateTime {
date: Date::YMD {
year: 2015,
month: 6,
day: 26,
},
time: Time {
hour: 16,
minute: 43,
second: 23,
tz_offset_hours: 2,
tz_offset_minutes: 0,
},
});
For partial data the only difference is wrapping input in Partial and handling incomplete errors correctly, which is documented in winnow partial docs.
pub type Stream<'i> = Partial<&'i [u8]>;
let datetime = opt(datetime)
.parse_next(&mut Stream::new("2015-06-26 16:43:23+0200").as_bytes()));
// the above will give you:
Some(DateTime {
date: Date::YMD {
year: 2015,
month: 6,
day: 26,
},
time: Time {
hour: 16,
minute: 43,
second: 23,
tz_offset_hours: 2,
tz_offset_minutes: 0,
},
});
winnow-rfc3339 is the fruit of the work of many contributors over the years, many thanks for your help!
Documentation is online.
MIT Licensed. See LICENSE