+#[derive(Debug, RustcEncodable)]
+struct Relation {
+ span: SpanData,
+ kind: RelationKind,
+ from: Id,
+ to: Id,
+}
+
+#[derive(Debug, RustcEncodable)]
+enum RelationKind {
+ Impl,
+ SuperTrait,
+}
+
+impl From<ImplData> for Relation {
+ fn from(data: ImplData) -> Relation {
+ Relation {
+ span: data.span,
+ kind: RelationKind::Impl,
+ from: From::from(data.self_ref.unwrap_or(null_def_id())),
+ to: From::from(data.trait_ref.unwrap_or(null_def_id())),
+ }
+ }
+}
+
+impl From<InheritanceData> for Relation {
+ fn from(data: InheritanceData) -> Relation {
+ Relation {
+ span: data.span,
+ kind: RelationKind::SuperTrait,
+ from: From::from(data.base_id),
+ to: From::from(data.deriv_id),
+ }
+ }
+}
+