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