オペレータオーバーロードしたいです。単純な Struct ならいいのですが、 Rc<Struct>std::op::Add を実装させようとすると、コンパイルできません。解決策はあるでしょうか。

use std::rc::Rc;
use std::ops::Add;

struct Struct;

// コンパイルできない
impl Add for Rc<Struct> {
    type Output = Rc<Struct>;
    fn add(self, rhs: Self) -> Self::Output {
        Rc::new(Struct{})
    }
}

// コンパイルできる
impl Add for Struct {
    type Output = Struct;
    fn add(self, rhs: Self) -> Self::Output {
        Struct{}
    }
}

fn main() {}

コンパイルエラーのメッセージは以下です。

error[E0117]: only traits defined in the current crate can be implemented for arbitrary types
  = note: the impl does not reference any types defined in this crate
  = note: define and implement a trait or new type instead