Refine Add/AddAssign for AST and Module.

This commit is contained in:
Stephen Chung
2020-10-07 23:25:08 +08:00
parent d35c216465
commit b2d603ec06
2 changed files with 17 additions and 32 deletions

View File

@@ -443,25 +443,17 @@ impl AST {
}
}
impl Add<Self> for &AST {
impl<A: AsRef<AST>> Add<A> for &AST {
type Output = AST;
fn add(self, rhs: Self) -> Self::Output {
self.merge(rhs)
fn add(self, rhs: A) -> Self::Output {
self.merge(rhs.as_ref())
}
}
impl Add<&Self> for &AST {
type Output = AST;
fn add(self, rhs: &Self) -> Self::Output {
self.merge(rhs)
}
}
impl AddAssign<AST> for AST {
fn add_assign(&mut self, rhs: AST) {
self.combine(rhs);
impl<A: Into<AST>> AddAssign<A> for AST {
fn add_assign(&mut self, rhs: A) {
self.combine(rhs.into());
}
}