3个版本 (稳定)
| 1.1.0 | 2023年12月5日 |
|---|---|
| 1.0.0 | 2019年6月15日 |
| 0.1.0 | 2018年2月16日 |
在 日期和时间 类别中排名第 149
每月下载量 24
7KB
diesel-chrono-duration
此crate将chrono::Duration类型支持添加到diesel ORM中。
为什么
Diesel crate只包含可以表示为SQL类型的类型实现。而chrono::Duration在SQLite和PostgreSQL中都没有直接的1对1映射。
如何
chrono::Duration类型将其值存储为i64数字。这正好是8个字节,这样的类型是BigInteger和BigInt。因此,ToSql和FromSql特质的实现简单地使用chrono::Duration的内部i64值。
使用方法
为了实现这一点,我们添加了ChronoDurationProxy类型,它是一个强类型,定义为
pub struct ChronoDurationProxy(pub chrono::Duration);
在您的表模型中,您使用它而不是chrono::Duration
extern crate diesel_chrono_duration;
use diesel_chrono_duration::ChronoDurationProxy;
#[derive(Debug, Clone, Queryable, Insertable)]
#[table_name = "sometable"]
pub struct SomeTable {
/// The ID of the record in the table.
pub id: i32,
/// Some duration
pub duration: ChronoDurationProxy,
}
稍后,当您想将其值作为chrono::Duration使用时,您有这些选项
*duration返回内部chrono::Duration对象的引用。这是通过Deref特质完成的。&duration也返回内部chrono::Duration对象的引用。这是通过AsRef特质完成的。duration.0如同普通的Rust。
贡献
这个项目非常简单且小巧,但所有贡献都是“请做出贡献”。提前感谢。
许可证
本项目采用MIT许可证。
依赖
~4.5MB
~80K SLoC