Skip to content

Commit 7dcbd5d

Browse files
committed
Add conversion traits for Object<->Tag|Commit
1 parent b2d1b5d commit 7dcbd5d

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

git-object/src/borrowed/mod.rs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::Time;
22
use bstr::BStr;
33
use quick_error::quick_error;
4-
use std::str;
4+
use std::{convert::TryFrom, str};
55

66
pub(crate) mod commit;
77
pub(crate) mod tag;
@@ -83,6 +83,39 @@ impl<'data> Object<'data> {
8383
}
8484
}
8585

86+
impl<'data> From<Tag<'data>> for Object<'data> {
87+
fn from(v: Tag<'data>) -> Self {
88+
Object::Tag(v)
89+
}
90+
}
91+
impl<'data> From<Commit<'data>> for Object<'data> {
92+
fn from(v: Commit<'data>) -> Self {
93+
Object::Commit(v)
94+
}
95+
}
96+
97+
impl<'data> TryFrom<Object<'data>> for Tag<'data> {
98+
type Error = Object<'data>;
99+
100+
fn try_from(value: Object<'data>) -> Result<Self, Self::Error> {
101+
Ok(match value {
102+
Object::Tag(v) => v,
103+
_ => return Err(value),
104+
})
105+
}
106+
}
107+
108+
impl<'data> TryFrom<Object<'data>> for Commit<'data> {
109+
type Error = Object<'data>;
110+
111+
fn try_from(value: Object<'data>) -> Result<Self, Self::Error> {
112+
Ok(match value {
113+
Object::Commit(v) => v,
114+
_ => return Err(value),
115+
})
116+
}
117+
}
118+
86119
#[derive(PartialEq, Eq, Debug, Hash)]
87120
pub struct Signature<'data> {
88121
pub name: &'data BStr,

0 commit comments

Comments
 (0)