rust腐蚀里面ban宏是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rust腐蚀里面ban宏是啥意思相关的知识,希望对你有一定的参考价值。

参考技术A rust腐蚀里面ban宏意思如下
让你可以发明自己的语法,编写出可以自行展开的代码,也就是我们通常所说的元编程,你甚至可以用Rust宏来创作自己的DSL。

rust-chrono 中的 ParseError(NotEnough) 是啥意思?

【中文标题】rust-chrono 中的 ParseError(NotEnough) 是啥意思?【英文标题】:What does ParseError(NotEnough) from rust-chrono mean?rust-chrono 中的 ParseError(NotEnough) 是什么意思? 【发布时间】:2016-09-21 22:56:14 【问题描述】:

我正在使用rust-chrono,我正在尝试解析这样的日期:

extern crate chrono;

use chrono::*;

fn main() 

    let date_str = "2013-02-14 15:41:07";
    let date = DateTime::parse_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
    match date 
        Ok(v) => println!(":?", v),
        Err(e) => println!(":?", e)
    


这是输出:

ParseError(NotEnough)

这是什么意思?不够什么?我应该使用其他库吗?

【问题讨论】:

【参考方案1】:

实现Error 的类型通过Error::descriptionDisplay 有更多用户友好的错误消息:

Err(e) => println!("", e)

打印出来:

输入对于唯一的日期和时间是不够的

大概是因为你没有提供时区,所以时间不明确。

【讨论】:

【参考方案2】:

你应该使用

UTC.datetime_from_str(&date_str, "%Y-%m-%d %H:%M:%S");

喜欢:

extern crate chrono;

use chrono::*;

fn main() 

    let date_str = "2013-02-14 15:41:07";
    let date = UTC.datetime_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
    match date 
        Ok(v) => println!(":?", v),
        Err(e) => println!(":?", e)
    


【讨论】:

更新:NaiveDateTime::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S").map(|ndt| DateTime::<Utc>::from_utc(ndt, Utc)) @MingweiSamuel 我猜更新是因为“UTC”不再是 Chrono 的一部分?但是,您的建议真的是解析具有已知时区(不包含在字符串中)的日期时间的最简洁方法吗?我只是有点惊讶,因为这似乎是一个相当普遍的需求。 应该是 Utc:docs.rs/chrono/0.4.19/chrono/offset/struct.Utc.html【参考方案3】:

当没有足够的信息来填充整个对象时,会出现 ParseError(NotEnough)。例如缺少日期、时间或时区。

在上面的示例中,时区缺失。所以我们可以将它存储在NaiveDateTime 中。此对象不存储时区:

let naive_datetime = NaiveDateTime::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S").unwrap();

欲了解更多信息:https://***.com/a/61179071/2037998

【讨论】:

以上是关于rust腐蚀里面ban宏是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

宏在电脑中是啥意思起啥作用?

腐蚀rust配置是啥

Rust 类型中的 & 符号是啥意思?

rust-chrono 中的 ParseError(NotEnough) 是啥意思?

Rust 声明性宏中的 @ 符号是啥意思?

Rust 宏中的 tt 元变量类型是啥意思?