diff --git a/derive/src/generate/ser.rs b/derive/src/generate/ser.rs index b743fa4..7821802 100644 --- a/derive/src/generate/ser.rs +++ b/derive/src/generate/ser.rs @@ -68,7 +68,7 @@ fn variant_compound_fields( ); quote! { - <#ty as ::linked_data::LinkedDataSubject>::visit_subject(#field_ref, &mut visitor)?; + <#ty as ::linked_data::LinkedDataSubject>::accept_subject_visitor(#field_ref, &mut visitor)?; } } else { match field_attrs.iri { @@ -85,7 +85,7 @@ fn variant_compound_fields( ); quote! { - visitor.predicate( + visitor.visit_predicate( ::linked_data::iref::Iri::new(#iri).unwrap(), &Some(::linked_data::AnonymousGraph(#field_ref)) )?; @@ -99,7 +99,7 @@ fn variant_compound_fields( ); quote! { - visitor.predicate( + visitor.visit_predicate( ::linked_data::iref::Iri::new(#iri).unwrap(), #field_ref )?; diff --git a/derive/src/generate/ser/enum.rs b/derive/src/generate/ser/enum.rs index 2c3d3d6..b74fbf1 100644 --- a/derive/src/generate/ser/enum.rs +++ b/derive/src/generate/ser/enum.rs @@ -212,7 +212,7 @@ pub fn generate( } impl #subject_impl_generics ::linked_data::LinkedDataSubject for #ident #ty_generics #subject_where_clauses { - fn visit_subject(&self, mut visitor: S_) -> Result + fn accept_subject_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::SubjectVisitor { @@ -223,7 +223,7 @@ pub fn generate( } impl #predicate_impl_generics ::linked_data::LinkedDataPredicateObjects for #ident #ty_generics #predicate_where_clauses { - fn visit_objects(&self, mut visitor: S_) -> Result + fn accept_objects_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::PredicateObjectsVisitor { @@ -234,7 +234,7 @@ pub fn generate( } impl #graph_impl_generics ::linked_data::LinkedDataGraph for #ident #ty_generics #graph_where_clauses { - fn visit_graph(&self, mut visitor: S_) -> Result + fn accept_graph_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::GraphVisitor { @@ -245,7 +245,7 @@ pub fn generate( } impl #dataset_impl_generics ::linked_data::LinkedData for #ident #ty_generics #dataset_where_clauses { - fn visit(&self, mut visitor: S_) -> Result + fn accept_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::Visitor { @@ -393,7 +393,7 @@ fn variant_visit_subject( ); quote! { - visitor.predicate( + visitor.visit_predicate( ::linked_data::iref::Iri::new(#iri).unwrap(), #id )?; @@ -408,7 +408,7 @@ fn variant_visit_subject( vocabulary_bounds.add(inner_ty.visit_vocabulary_bounds); quote! { - visitor.predicate( + visitor.visit_predicate( ::linked_data::iref::Iri::new(#iri).unwrap(), &#inner_id #input )?; @@ -433,7 +433,7 @@ fn variant_visit_subject( ); quote! { - <#ty as ::linked_data::LinkedDataSubject>::visit_subject(#id, visitor) + <#ty as ::linked_data::LinkedDataSubject>::accept_subject_visitor(#id, visitor) } } VariantShape::Compound(inner_ty) => { @@ -444,7 +444,7 @@ fn variant_visit_subject( vocabulary_bounds.add(inner_ty.visit_vocabulary_bounds); quote! { - #inner_id #input .visit_subject(visitor) + #inner_id #input .accept_subject_visitor(visitor) } } VariantShape::Unit => { @@ -481,7 +481,7 @@ fn variant_visit_predicate( ::linked_data::AnonymousBinding( ::linked_data::iref::Iri::new(#iri).unwrap(), #id - ).visit_objects(visitor) + ).accept_objects_visitor(visitor) } } VariantShape::Compound(inner_ty) => { @@ -495,12 +495,12 @@ fn variant_visit_predicate( ::linked_data::AnonymousBinding( ::linked_data::iref::Iri::new(#iri).unwrap(), &#inner_id #input - ).visit_objects(visitor) + ).accept_objects_visitor(visitor) } } VariantShape::Unit => { quote! { - visitor.object(::linked_data::iref::Iri::new(#iri).unwrap())?; + visitor.visit_object(::linked_data::iref::Iri::new(#iri).unwrap())?; visitor.end() } } @@ -516,7 +516,7 @@ fn variant_visit_predicate( ); quote! { - <#ty as ::linked_data::LinkedDataPredicateObjects>::visit_objects(#id, visitor) + <#ty as ::linked_data::LinkedDataPredicateObjects>::accept_objects_visitor(#id, visitor) } } VariantShape::Compound(inner_ty) => { @@ -527,7 +527,7 @@ fn variant_visit_predicate( vocabulary_bounds.add(inner_ty.visit_vocabulary_bounds); quote! { - #inner_id #input .visit_objects(visitor) + #inner_id #input .accept_objects_visitor(visitor) } } VariantShape::Unit => { @@ -564,7 +564,7 @@ fn variant_visit_graph( ::linked_data::AnonymousBinding( ::linked_data::iref::Iri::new(#iri).unwrap(), #id - ).visit_graph(visitor) + ).accept_graph_visitor(visitor) } } VariantShape::Compound(inner_ty) => { @@ -578,12 +578,12 @@ fn variant_visit_graph( ::linked_data::AnonymousBinding( ::linked_data::iref::Iri::new(#iri).unwrap(), &#inner_id #input - ).visit_graph(visitor) + ).accept_graph_visitor(visitor) } } VariantShape::Unit => { quote! { - visitor.subject(::linked_data::iref::Iri::new(#iri).unwrap())?; + visitor.visit_subject(::linked_data::iref::Iri::new(#iri).unwrap())?; visitor.end() } } @@ -599,7 +599,7 @@ fn variant_visit_graph( ); quote! { - <#ty as ::linked_data::LinkedDataGraph>::visit_graph(#id, visitor) + <#ty as ::linked_data::LinkedDataGraph>::accept_graph_visitor(#id, visitor) } } VariantShape::Compound(inner_ty) => { @@ -610,7 +610,7 @@ fn variant_visit_graph( vocabulary_bounds.add(inner_ty.visit_vocabulary_bounds); quote! { - #inner_id #input .visit_graph(visitor) + #inner_id #input .accept_graph_visitor(visitor) } } VariantShape::Unit => { @@ -647,7 +647,7 @@ fn variant_serialize( ::linked_data::AnonymousBinding( ::linked_data::iref::Iri::new(#iri).unwrap(), #id - ).visit(visitor) + ).accept_visitor(visitor) } } VariantShape::Compound(inner_ty) => { @@ -661,12 +661,12 @@ fn variant_serialize( ::linked_data::AnonymousBinding( ::linked_data::iref::Iri::new(#iri).unwrap(), &#inner_id #input - ).visit(visitor) + ).accept_visitor(visitor) } } VariantShape::Unit => { quote! { - visitor.default_graph(::linked_data::iref::Iri::new(#iri).unwrap())?; + visitor.visit_default_graph(::linked_data::iref::Iri::new(#iri).unwrap())?; visitor.end() } } @@ -682,7 +682,7 @@ fn variant_serialize( ); quote! { - <#ty as ::linked_data::LinkedData>::visit(#id, visitor) + <#ty as ::linked_data::LinkedData>::accept_visitor(#id, visitor) } } VariantShape::Compound(inner_ty) => { @@ -693,7 +693,7 @@ fn variant_serialize( vocabulary_bounds.add(inner_ty.visit_vocabulary_bounds); quote! { - #inner_id #input .visit(visitor) + #inner_id #input .accept_visitor(visitor) } } VariantShape::Unit => { @@ -854,7 +854,7 @@ fn variant_subject_type( } impl #visit_impl_generics ::linked_data::LinkedDataSubject for #subject_id #ty_generics #visit_where_clauses { - fn visit_subject(&self, mut visitor: S_) -> Result + fn accept_subject_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::SubjectVisitor { @@ -864,31 +864,31 @@ fn variant_subject_type( } impl #visit_impl_generics ::linked_data::LinkedDataPredicateObjects for #subject_id #ty_generics #visit_where_clauses { - fn visit_objects(&self, mut visitor: S_) -> Result + fn accept_objects_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::PredicateObjectsVisitor { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } impl #visit_impl_generics ::linked_data::LinkedDataGraph for #subject_id #ty_generics #visit_where_clauses { - fn visit_graph(&self, mut visitor: S_) -> Result + fn accept_graph_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::GraphVisitor { - visitor.subject(self)?; + visitor.visit_subject(self)?; visitor.end() } } impl #visit_impl_generics ::linked_data::LinkedData for #subject_id #ty_generics #visit_where_clauses { - fn visit(&self, mut visitor: S_) -> Result + fn accept_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::Visitor { - visitor.default_graph(self)?; + visitor.visit_default_graph(self)?; visitor.end() } } diff --git a/derive/src/generate/ser/struct.rs b/derive/src/generate/ser/struct.rs index 9310527..43f5508 100644 --- a/derive/src/generate/ser/struct.rs +++ b/derive/src/generate/ser/struct.rs @@ -36,7 +36,7 @@ pub fn generate( let rdf_type = RDF_TYPE.as_str(); Ok(quote! { - visitor.predicate( + visitor.visit_predicate( ::linked_data::iref::Iri::new(#rdf_type).unwrap(), ::linked_data::iref::Iri::new(#iri).unwrap() )?; @@ -86,7 +86,7 @@ pub fn generate( } impl #impl_generics ::linked_data::LinkedDataSubject for #ident #ty_generics #where_clause { - fn visit_subject(&self, mut visitor: S_) -> Result + fn accept_subject_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::SubjectVisitor { @@ -96,31 +96,31 @@ pub fn generate( } impl #impl_generics ::linked_data::LinkedDataPredicateObjects for #ident #ty_generics #where_clause { - fn visit_objects(&self, mut visitor: S_) -> Result + fn accept_objects_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::PredicateObjectsVisitor { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } impl #impl_generics ::linked_data::LinkedDataGraph for #ident #ty_generics #where_clause { - fn visit_graph(&self, mut visitor: S_) -> Result + fn accept_graph_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::GraphVisitor { - visitor.subject(self)?; + visitor.visit_subject(self)?; visitor.end() } } impl #impl_generics ::linked_data::LinkedData for #ident #ty_generics #where_clause { - fn visit(&self, mut visitor: S_) -> Result + fn accept_visitor(&self, mut visitor: S_) -> Result where S_: ::linked_data::Visitor { - visitor.default_graph(self)?; + visitor.visit_default_graph(self)?; visitor.end() } } diff --git a/src/anonymous.rs b/src/anonymous.rs index 5b037bd..49d32da 100644 --- a/src/anonymous.rs +++ b/src/anonymous.rs @@ -14,7 +14,7 @@ impl<'a, T> AnonymousBinding<'a, T> { } } -impl<'a, I: Interpretation, V: Vocabulary, T> LinkedDataResource for AnonymousBinding<'a, T> { +impl LinkedDataResource for AnonymousBinding<'_, T> { fn interpretation( &self, _vocabulary: &mut V, @@ -24,66 +24,59 @@ impl<'a, I: Interpretation, V: Vocabulary, T> LinkedDataResource for Anony } } -impl< - 'a, - V: Vocabulary + IriVocabularyMut, - I: Interpretation, - T: LinkedDataPredicateObjects, - > LinkedDataSubject for AnonymousBinding<'a, T> +impl LinkedDataSubject for AnonymousBinding<'_, T> +where + V: IriVocabularyMut, + T: LinkedDataPredicateObjects, { - fn visit_subject(&self, mut serializer: S) -> Result + fn accept_subject_visitor(&self, mut visitor: S) -> Result where S: SubjectVisitor, { - serializer.predicate(self.0, self.1)?; - serializer.end() + visitor.visit_predicate(self.0, self.1)?; + visitor.end() } } -impl< - 'a, - V: Vocabulary + IriVocabularyMut, - I: Interpretation, - T: LinkedDataPredicateObjects, - > LinkedDataPredicateObjects for AnonymousBinding<'a, T> +impl LinkedDataPredicateObjects + for AnonymousBinding<'_, T> +where + V: IriVocabularyMut, + T: LinkedDataPredicateObjects, { - fn visit_objects(&self, mut serializer: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - serializer.object(self)?; - serializer.end() + visitor.visit_object(self)?; + visitor.end() } } -impl< - 'a, - V: Vocabulary + IriVocabularyMut, - I: Interpretation, - T: LinkedDataPredicateObjects, - > LinkedDataGraph for AnonymousBinding<'a, T> +impl LinkedDataGraph for AnonymousBinding<'_, T> +where + V: IriVocabularyMut, + T: LinkedDataPredicateObjects, { - fn visit_graph(&self, mut serializer: S) -> Result + fn accept_graph_visitor(&self, mut visitor: S) -> Result where S: GraphVisitor, { - serializer.subject(self)?; - serializer.end() + visitor.visit_subject(self)?; + visitor.end() } } -impl< - 'a, - V: Vocabulary + IriVocabularyMut, - I: Interpretation, - T: LinkedDataPredicateObjects, - > LinkedData for AnonymousBinding<'a, T> +impl LinkedData for AnonymousBinding<'_, T> +where + V: IriVocabularyMut, + T: LinkedDataPredicateObjects, { - fn visit(&self, mut serializer: S) -> Result + fn accept_visitor(&self, mut visitor: S) -> Result where S: Visitor, { - serializer.default_graph(self)?; - serializer.end() + visitor.visit_default_graph(self)?; + visitor.end() } } diff --git a/src/datatypes/ser.rs b/src/datatypes/ser.rs index 94df846..a1b3c5b 100644 --- a/src/datatypes/ser.rs +++ b/src/datatypes/ser.rs @@ -24,7 +24,7 @@ macro_rules! datatype { } impl LinkedDataSubject for $ty { - fn visit_subject(&self, visitor: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: crate::SubjectVisitor { @@ -33,11 +33,11 @@ macro_rules! datatype { } impl LinkedDataPredicateObjects for $ty { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -61,7 +61,7 @@ macro_rules! unsized_datatype { } impl LinkedDataSubject for $ty { - fn visit_subject(&self, visitor: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: crate::SubjectVisitor { @@ -70,11 +70,11 @@ macro_rules! unsized_datatype { } impl LinkedDataPredicateObjects for $ty { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -126,7 +126,7 @@ impl impl LinkedDataSubject for xsd_types::AnyUriBuf { - fn visit_subject(&self, visitor: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: crate::SubjectVisitor, { @@ -137,11 +137,11 @@ impl impl LinkedDataPredicateObjects for xsd_types::AnyUriBuf { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } diff --git a/src/graph.rs b/src/graph.rs index b5669a8..776eacc 100644 --- a/src/graph.rs +++ b/src/graph.rs @@ -5,15 +5,14 @@ use crate::{LinkedData, LinkedDataPredicateObjects, LinkedDataResource, LinkedDa // use crate::SerializeSubject; -/// Serialize a Linked-Data graph. pub trait LinkedDataGraph { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor; } impl LinkedDataGraph for () { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor, { @@ -21,30 +20,32 @@ impl LinkedDataGraph for () { } } -impl<'a, I: Interpretation, V: Vocabulary, T: ?Sized + LinkedDataGraph> LinkedDataGraph - for &'a T +impl LinkedDataGraph for &T +where + T: ?Sized + LinkedDataGraph, { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor, { - T::visit_graph(self, visitor) + T::accept_graph_visitor(self, visitor) } } -impl> LinkedDataGraph - for Box +impl LinkedDataGraph for Box +where + T: ?Sized + LinkedDataGraph, { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor, { - T::visit_graph(self, visitor) + T::accept_graph_visitor(self, visitor) } } impl LinkedDataGraph for Iri { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor, { @@ -53,7 +54,7 @@ impl LinkedDataGraph for Iri { } impl LinkedDataGraph for IriBuf { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor, { @@ -61,29 +62,31 @@ impl LinkedDataGraph for IriBuf { } } -impl + LinkedDataResource> - LinkedDataGraph for [T] +impl LinkedDataGraph for [T] +where + T: LinkedDataSubject + LinkedDataResource, { - fn visit_graph(&self, mut visitor: S) -> Result + fn accept_graph_visitor(&self, mut visitor: S) -> Result where S: GraphVisitor, { for t in self { - visitor.subject(t)?; + visitor.visit_subject(t)?; } visitor.end() } } -impl + LinkedDataResource> - LinkedDataGraph for Vec +impl LinkedDataGraph for Vec +where + T: LinkedDataSubject + LinkedDataResource, { - fn visit_graph(&self, mut visitor: S) -> Result + fn accept_graph_visitor(&self, mut visitor: S) -> Result where S: GraphVisitor, { for t in self { - visitor.subject(t)?; + visitor.visit_subject(t)?; } visitor.end() } @@ -93,22 +96,25 @@ pub trait GraphVisitor { type Ok; type Error; - fn subject(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_subject(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataSubject; fn end(self) -> Result; } -impl<'a, I: Interpretation, V: Vocabulary, S: GraphVisitor> GraphVisitor for &'a mut S { +impl GraphVisitor for &mut S +where + S: GraphVisitor, +{ type Ok = (); type Error = S::Error; - fn subject(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_subject(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataSubject, { - S::subject(self, value) + S::visit_subject(self, value) } fn end(self) -> Result { @@ -128,49 +134,53 @@ impl LinkedDataResource for Anonymous } } -impl> LinkedDataSubject - for AnonymousGraph +impl LinkedDataSubject for AnonymousGraph +where + T: LinkedDataGraph, { - fn visit_subject(&self, mut serializer: S) -> Result + fn accept_subject_visitor(&self, mut visitor: S) -> Result where S: crate::SubjectVisitor, { - serializer.graph(&self.0)?; - serializer.end() + visitor.visit_graph(&self.0)?; + visitor.end() } } -impl> LinkedDataPredicateObjects - for AnonymousGraph +impl LinkedDataPredicateObjects for AnonymousGraph +where + T: LinkedDataGraph, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: crate::PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } -impl> LinkedDataGraph - for AnonymousGraph +impl LinkedDataGraph for AnonymousGraph +where + T: LinkedDataGraph, { - fn visit_graph(&self, visitor: S) -> Result + fn accept_graph_visitor(&self, visitor: S) -> Result where S: GraphVisitor, { - T::visit_graph(&self.0, visitor) + T::accept_graph_visitor(&self.0, visitor) } } -impl> LinkedData - for AnonymousGraph +impl LinkedData for AnonymousGraph +where + T: LinkedDataGraph, { - fn visit(&self, mut visitor: S) -> Result + fn accept_visitor(&self, mut visitor: S) -> Result where S: crate::Visitor, { - visitor.named_graph(self)?; + visitor.visit_named_graph(self)?; visitor.end() } } diff --git a/src/impl/rdf_types/dataset_graph_view.rs b/src/impl/rdf_types/dataset_graph_view.rs index 068cfc7..2f11876 100644 --- a/src/impl/rdf_types/dataset_graph_view.rs +++ b/src/impl/rdf_types/dataset_graph_view.rs @@ -9,12 +9,12 @@ use crate::{ ResourceInterpretation, SubjectVisitor, }; -impl<'a, I: Interpretation, V: Vocabulary, D> LinkedDataSubject for DatasetGraphView<'a, D> +impl LinkedDataSubject for DatasetGraphView<'_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_subject(&self, mut serializer: S) -> Result + fn accept_subject_visitor(&self, mut serializer: S) -> Result where S: SubjectVisitor, { @@ -35,13 +35,13 @@ struct PredicateObjects<'d, 'v, D: Dataset> { visited: &'v im::HashSet<&'d D::Resource>, } -impl<'d, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataPredicateObjects - for PredicateObjects<'d, 'v, D> +impl LinkedDataPredicateObjects + for PredicateObjects<'_, '_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { @@ -49,7 +49,7 @@ where .dataset .quad_objects(self.graph, self.subject, self.predicate) { - visitor.object(&Object { + visitor.visit_object(&Object { dataset: self.dataset, graph: self.graph, object, @@ -61,8 +61,8 @@ where } } -impl<'a, 'v, I: Interpretation, V: Vocabulary, D: Dataset> - LinkedDataResource for Object<'a, 'v, D> +impl> LinkedDataResource + for Object<'_, '_, D> where I::Resource: LinkedDataResource, { @@ -82,12 +82,12 @@ struct Object<'d, 'v, D: Dataset> { visited: &'v im::HashSet<&'d D::Resource>, } -impl<'d, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataSubject for Object<'d, 'v, D> +impl LinkedDataSubject for Object<'_, '_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_subject(&self, mut visitor: S) -> Result + fn accept_subject_visitor(&self, mut visitor: S) -> Result where S: SubjectVisitor, { @@ -145,7 +145,7 @@ impl<'d, 'v, D: PredicateTraversableDataset + PatternMatchingDataset> Subject<'d .dataset .quad_predicates_objects(self.graph, self.subject) { - visitor.predicate( + visitor.visit_predicate( predicate, &PredicateObjects { dataset: self.dataset, @@ -161,12 +161,12 @@ impl<'d, 'v, D: PredicateTraversableDataset + PatternMatchingDataset> Subject<'d } } -impl<'d, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataSubject for Subject<'d, 'v, D> +impl LinkedDataSubject for Subject<'_, '_, D> where D::Resource: Eq + Hash + LinkedDataResource, D: PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_subject(&self, mut visitor: S) -> Result + fn accept_subject_visitor(&self, mut visitor: S) -> Result where S: SubjectVisitor, { @@ -175,7 +175,7 @@ where .dataset .quad_predicates_objects(self.graph, self.subject) { - visitor.predicate( + visitor.visit_predicate( predicate, &PredicateObjects { dataset: self.dataset, diff --git a/src/impl/rdf_types/dataset_view.rs b/src/impl/rdf_types/dataset_view.rs index f91dfe8..f12dc8f 100644 --- a/src/impl/rdf_types/dataset_view.rs +++ b/src/impl/rdf_types/dataset_view.rs @@ -11,14 +11,14 @@ use rdf_types::{ Dataset, Interpretation, Quad, Vocabulary, }; -impl<'a, I: Interpretation, V: Vocabulary, D> LinkedDataGraph for DatasetView<'a, D> +impl LinkedDataGraph for DatasetView<'_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: SubjectTraversableDataset + PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_graph(&self, mut visitor: S) -> Result + fn accept_graph_visitor(&self, mut visitor: S) -> Result where S: GraphVisitor, { @@ -44,7 +44,7 @@ where } for subject in graph_subjects { - visitor.subject(&Subject::new( + visitor.visit_subject(&Subject::new( self.dataset, self.graph, subject, @@ -67,15 +67,15 @@ struct PredicateObjects<'d, 'v, D: Dataset> { visited_graphs: &'v im::HashSet<&'d D::Resource>, } -impl<'d, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataPredicateObjects - for PredicateObjects<'d, 'v, D> +impl LinkedDataPredicateObjects + for PredicateObjects<'_, '_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: SubjectTraversableDataset + PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { @@ -83,7 +83,7 @@ where .dataset .quad_objects(self.graph, self.subject, self.predicate) { - visitor.object(&Object { + visitor.visit_object(&Object { dataset: self.dataset, graph: self.graph, object, @@ -96,7 +96,7 @@ where } } -impl<'a, 'v, D, I: Interpretation, V: Vocabulary> LinkedDataResource for Object<'a, 'v, D> +impl LinkedDataResource for Object<'_, '_, D> where I::Resource: LinkedDataResource, D: Dataset, @@ -118,14 +118,14 @@ struct Object<'a, 'v, D: Dataset> { visited_graphs: &'v im::HashSet<&'a D::Resource>, } -impl<'a, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataSubject for Object<'a, 'v, D> +impl LinkedDataSubject for Object<'_, '_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: SubjectTraversableDataset + PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_subject(&self, mut visitor: S) -> Result + fn accept_subject_visitor(&self, mut visitor: S) -> Result where S: SubjectVisitor, { @@ -196,7 +196,7 @@ where .dataset .quad_predicates_objects(self.graph, self.subject) { - visitor.predicate( + visitor.visit_predicate( predicate, &PredicateObjects { dataset: self.dataset, @@ -212,7 +212,7 @@ where if self.dataset.contains_named_graph(self.subject) { let mut visited_graphs = self.visited_graphs.clone(); if visited_graphs.insert(self.subject).is_none() { - visitor.graph(&NamedGraphView { + visitor.visit_graph(&NamedGraphView { dataset: self.dataset, graph: self.subject, visited_graphs: &visited_graphs, @@ -225,7 +225,7 @@ where } } -impl<'a, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataResource for Subject<'a, 'v, D> +impl LinkedDataResource for Subject<'_, '_, D> where I::Resource: LinkedDataResource, D: Dataset, @@ -239,14 +239,14 @@ where } } -impl<'a, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataSubject for Subject<'a, 'v, D> +impl LinkedDataSubject for Subject<'_, '_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: SubjectTraversableDataset + PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_subject(&self, mut visitor: S) -> Result + fn accept_subject_visitor(&self, mut visitor: S) -> Result where S: SubjectVisitor, { @@ -254,7 +254,7 @@ where .dataset .quad_predicates_objects(self.graph, self.subject) { - visitor.predicate( + visitor.visit_predicate( predicate, &PredicateObjects { dataset: self.dataset, @@ -277,8 +277,8 @@ struct NamedGraphView<'a, 'v, D: Dataset> { visited_graphs: &'v im::HashSet<&'a D::Resource>, } -impl<'a, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataResource - for NamedGraphView<'a, 'v, D> +impl LinkedDataResource + for NamedGraphView<'_, '_, D> where I::Resource: LinkedDataResource, D: Dataset, @@ -292,15 +292,15 @@ where } } -impl<'a, 'v, I: Interpretation, V: Vocabulary, D> LinkedDataGraph - for NamedGraphView<'a, 'v, D> +impl LinkedDataGraph + for NamedGraphView<'_, '_, D> where I::Resource: Eq + Hash + LinkedDataResource, D: SubjectTraversableDataset + PredicateTraversableDataset + PatternMatchingDataset, { - fn visit_graph(&self, mut visitor: S) -> Result + fn accept_graph_visitor(&self, mut visitor: S) -> Result where S: GraphVisitor, { @@ -322,7 +322,7 @@ where } for subject in graph_subjects { - visitor.subject(&Subject::new( + visitor.visit_subject(&Subject::new( self.dataset, Some(self.graph), subject, diff --git a/src/lib.rs b/src/lib.rs index 5cb4f49..391ef41 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -161,33 +161,37 @@ impl FromLinkedDataError { /// [`visit`](Self::visit) method. pub trait LinkedData { /// Visit the RDF dataset represented by this type. - fn visit(&self, visitor: S) -> Result + fn accept_visitor(&self, visitor: S) -> Result where S: Visitor; } -impl<'a, I: Interpretation, V: Vocabulary, T: ?Sized + LinkedData> LinkedData - for &'a T +impl LinkedData for &T +where + T: ?Sized + LinkedData, { - fn visit(&self, visitor: S) -> Result + fn accept_visitor(&self, visitor: S) -> Result where S: Visitor, { - T::visit(self, visitor) + T::accept_visitor(self, visitor) } } -impl> LinkedData for Box { - fn visit(&self, visitor: S) -> Result +impl LinkedData for Box +where + T: ?Sized + LinkedData, +{ + fn accept_visitor(&self, visitor: S) -> Result where S: Visitor, { - T::visit(self, visitor) + T::accept_visitor(self, visitor) } } impl LinkedData for Iri { - fn visit(&self, visitor: S) -> Result + fn accept_visitor(&self, visitor: S) -> Result where S: Visitor, { @@ -205,12 +209,12 @@ pub trait Visitor { type Error; /// Visits the default graph of the dataset. - fn default_graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_default_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataGraph; /// Visits a named graph of the dataset. - fn named_graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_named_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataGraph; @@ -219,22 +223,25 @@ pub trait Visitor { } /// Any mutable reference to a visitor is itself a visitor. -impl<'s, I: Interpretation, V: Vocabulary, S: Visitor> Visitor for &'s mut S { +impl Visitor for &mut S +where + S: Visitor, +{ type Ok = (); type Error = S::Error; - fn default_graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_default_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataGraph, { - S::default_graph(self, value) + S::visit_default_graph(self, value) } - fn named_graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_named_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataGraph, { - S::named_graph(self, value) + S::visit_named_graph(self, value) } fn end(self) -> Result { @@ -250,7 +257,7 @@ pub enum ResourceOrIriRef<'a, I: Interpretation> { Anonymous, } -impl<'a, I: Interpretation> ResourceOrIriRef<'a, I> { +impl ResourceOrIriRef<'_, I> { pub fn into_iri(self, vocabulary: &V, interpretation: &I) -> Option where V: IriVocabulary, @@ -347,7 +354,7 @@ pub enum ContextIris { }, } -impl<'a, I: Interpretation> Default for Context<'a, I> { +impl Default for Context<'_, I> { fn default() -> Self { Self::Subject } diff --git a/src/macros.rs b/src/macros.rs index a411679..a76efaf 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -19,11 +19,11 @@ macro_rules! json_literal { } impl $crate::LinkedDataPredicateObjects for $ty { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: $crate::PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -66,7 +66,7 @@ macro_rules! json_literal { } impl $crate::LinkedDataSubject for $ty { - fn visit_subject(&self, visitor: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: $crate::SubjectVisitor, { diff --git a/src/predicate.rs b/src/predicate.rs index 1d401a8..c2d320d 100644 --- a/src/predicate.rs +++ b/src/predicate.rs @@ -15,13 +15,13 @@ use crate::{ /// Type representing the objects of an RDF subject's predicate binding. pub trait LinkedDataPredicateObjects { - fn visit_objects(&self, visitor: S) -> Result + fn accept_objects_visitor(&self, visitor: S) -> Result where S: PredicateObjectsVisitor; } impl LinkedDataPredicateObjects for () { - fn visit_objects(&self, visitor: S) -> Result + fn accept_objects_visitor(&self, visitor: S) -> Result where S: PredicateObjectsVisitor, { @@ -29,67 +29,72 @@ impl LinkedDataPredicateObjects for () { } } -impl<'a, I: Interpretation, V: Vocabulary, T: ?Sized + LinkedDataPredicateObjects> - LinkedDataPredicateObjects for &'a T +impl LinkedDataPredicateObjects for &T +where + T: ?Sized + LinkedDataPredicateObjects, { - fn visit_objects(&self, visitor: S) -> Result + fn accept_objects_visitor(&self, visitor: S) -> Result where S: PredicateObjectsVisitor, { - T::visit_objects(self, visitor) + T::accept_objects_visitor(self, visitor) } } -impl> - LinkedDataPredicateObjects for Box +impl LinkedDataPredicateObjects for Box +where + T: ?Sized + LinkedDataPredicateObjects, { - fn visit_objects(&self, visitor: S) -> Result + fn accept_objects_visitor(&self, visitor: S) -> Result where S: PredicateObjectsVisitor, { - T::visit_objects(self, visitor) + T::accept_objects_visitor(self, visitor) } } -impl + LinkedDataResource> - LinkedDataPredicateObjects for Option +impl LinkedDataPredicateObjects for Option +where + T: LinkedDataSubject + LinkedDataResource, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { if let Some(t) = self { - visitor.object(t)?; + visitor.visit_object(t)?; } visitor.end() } } -impl + LinkedDataResource> - LinkedDataPredicateObjects for [T] +impl LinkedDataPredicateObjects for [T] +where + T: LinkedDataSubject + LinkedDataResource, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { for t in self { - visitor.object(t)?; + visitor.visit_object(t)?; } visitor.end() } } -impl + LinkedDataResource> - LinkedDataPredicateObjects for Vec +impl LinkedDataPredicateObjects for Vec +where + T: LinkedDataSubject + LinkedDataResource, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { for t in self { - visitor.object(t)?; + visitor.visit_object(t)?; } visitor.end() @@ -100,11 +105,11 @@ impl LinkedDataPredicateObjects for Iri where V: IriVocabularyMut, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -113,11 +118,11 @@ impl LinkedDataPredicateObjects for IriB where V: IriVocabularyMut, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -126,11 +131,11 @@ impl LinkedDataPredicateObjects for Blan where V: BlankIdVocabularyMut, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -139,11 +144,11 @@ impl LinkedDataPredicateObjects for Blan where V: BlankIdVocabularyMut, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } @@ -153,13 +158,13 @@ where T: LinkedDataPredicateObjects, B: LinkedDataPredicateObjects, { - fn visit_objects(&self, visitor: S) -> Result + fn accept_objects_visitor(&self, visitor: S) -> Result where S: PredicateObjectsVisitor, { match self { - Self::Iri(i) => i.visit_objects(visitor), - Self::Blank(b) => b.visit_objects(visitor), + Self::Iri(i) => i.accept_objects_visitor(visitor), + Self::Blank(b) => b.accept_objects_visitor(visitor), } } } @@ -168,7 +173,7 @@ pub trait PredicateObjectsVisitor { type Ok; type Error; - fn object(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_object(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataSubject; @@ -274,8 +279,9 @@ where deserialize_single_object!(); } -impl> - LinkedDataDeserializePredicateObjects for Box +impl LinkedDataDeserializePredicateObjects for Box +where + T: LinkedDataDeserializePredicateObjects, { fn deserialize_objects_in<'a, D>( vocabulary: &V, @@ -294,10 +300,10 @@ impl> - LinkedDataDeserializePredicateObjects for Option +impl LinkedDataDeserializePredicateObjects for Option where I: ReverseIriInterpretation, + T: LinkedDataDeserializeSubject, { fn deserialize_objects_in<'a, D>( vocabulary: &V, diff --git a/src/quads.rs b/src/quads.rs index 041163f..2475cc7 100644 --- a/src/quads.rs +++ b/src/quads.rs @@ -18,19 +18,21 @@ use crate::{ SubjectVisitor, Visitor, }; -pub fn to_interpreted_quads( +pub fn to_interpreted_quads( vocabulary: &mut V, interpretation: &mut I, value: &impl LinkedData, ) -> Result>, IntoQuadsError> where - I: InterpretationMut + TermInterpretationMut, - I::Resource: Clone, - V: IriVocabularyMut + LiteralVocabularyMut, + V: Vocabulary + IriVocabularyMut + LiteralVocabularyMut, V::Iri: Clone, V::BlankId: Clone, + I: Interpretation + + InterpretationMut + + TermInterpretationMut, + I::Resource: Clone, { - value.visit(QuadSerializer { + value.accept_visitor(QuadSerializer { vocabulary, interpretation, domain: &mut InterpretationDomain, @@ -38,21 +40,22 @@ where }) } -pub fn to_interpreted_subject_quads( +pub fn to_interpreted_subject_quads( vocabulary: &mut V, interpretation: &mut I, graph: Option<&I::Resource>, value: &(impl LinkedDataSubject + LinkedDataResource), ) -> Result<(I::Resource, Vec>), IntoQuadsError> where - I: InterpretationMut + V: Vocabulary + IriVocabularyMut + LiteralVocabularyMut, + V::Iri: Clone, + V::BlankId: Clone, + I: Interpretation + + InterpretationMut + IriInterpretationMut + BlankIdInterpretationMut + LiteralInterpretationMut, I::Resource: Clone, - V: IriVocabularyMut + LiteralVocabularyMut, - V::Iri: Clone, - V::BlankId: Clone, { let mut result = Vec::new(); @@ -61,7 +64,7 @@ where ResourceInterpretation::Uninterpreted(_) => interpretation.new_resource(vocabulary), }; - value.visit_subject(QuadPropertiesSerializer { + value.accept_subject_visitor(QuadPropertiesSerializer { vocabulary, interpretation, domain: &mut InterpretationDomain, @@ -73,20 +76,21 @@ where Ok((subject, result)) } -pub fn to_interpreted_graph_quads( +pub fn to_interpreted_graph_quads( vocabulary: &mut V, interpretation: &mut I, value: &(impl LinkedDataGraph + LinkedDataResource), ) -> Result<(I::Resource, Vec>), IntoQuadsError> where - I: InterpretationMut + V: Vocabulary + IriVocabularyMut + LiteralVocabularyMut, + V::Iri: Clone, + V::BlankId: Clone, + I: Interpretation + + InterpretationMut + IriInterpretationMut + BlankIdInterpretationMut + LiteralInterpretationMut, I::Resource: Clone, - V: IriVocabularyMut + LiteralVocabularyMut, - V::Iri: Clone, - V::BlankId: Clone, { let mut result = Vec::new(); @@ -95,7 +99,7 @@ where ResourceInterpretation::Uninterpreted(_) => interpretation.new_resource(vocabulary), }; - value.visit_graph(QuadGraphSerializer { + value.accept_graph_visitor(QuadGraphSerializer { vocabulary, interpretation, domain: &mut InterpretationDomain, @@ -106,18 +110,20 @@ where Ok((graph, result)) } -pub fn to_lexical_quads_with( +pub fn to_lexical_quads_with( vocabulary: &mut V, interpretation: &mut I, value: &impl LinkedData, ) -> Result, IntoQuadsError> where - I: InterpretationMut + V: Vocabulary, + I: Interpretation + + InterpretationMut + ReverseTermInterpretation, { let mut domain = LexicalDomain; - value.visit(QuadSerializer { + value.accept_visitor(QuadSerializer { vocabulary, interpretation, domain: &mut domain, @@ -125,14 +131,16 @@ where }) } -pub fn to_lexical_subject_quads_with( +pub fn to_lexical_subject_quads_with( vocabulary: &mut V, interpretation: &mut I, graph: Option<&Id>, value: &(impl LinkedDataSubject + LinkedDataResource), ) -> Result<(Id, Vec), IntoQuadsError> where - I: InterpretationMut + V: Vocabulary, + I: Interpretation + + InterpretationMut + ReverseTermInterpretation, I::Resource: Clone, { @@ -141,7 +149,7 @@ where let i = value.interpretation(vocabulary, interpretation); let subject = LexicalDomain.subject(vocabulary, interpretation, i)?; - value.visit_subject(QuadPropertiesSerializer { + value.accept_subject_visitor(QuadPropertiesSerializer { vocabulary, interpretation, domain: &mut LexicalDomain, @@ -171,21 +179,22 @@ pub fn to_lexical_subject_quads( to_lexical_subject_quads_with(&mut (), &mut interpretation, graph, value) } -pub fn to_quads_with, V: Vocabulary>( +pub fn to_quads_with( vocabulary: &mut V, interpretation: &mut I, value: &impl LinkedData, ) -> Result>, IntoQuadsError> where - V: IriVocabularyMut + LiteralVocabularyMut, + V: Vocabulary + IriVocabularyMut + LiteralVocabularyMut, V::BlankId: Clone, V::Iri: Clone, V::Literal: Clone, + I: InterpretationMut, I: ReverseTermInterpretation, { let mut domain = VocabularyDomain; - value.visit(QuadSerializer { + value.accept_visitor(QuadSerializer { vocabulary, interpretation, domain: &mut domain, @@ -331,7 +340,13 @@ where type Subject = RdfId; type Predicate = V::Iri; type Object = Term, V::Literal>; - type ObjectRef<'a> = Term<&'a RdfId, &'a V::Literal> where V::Iri: 'a, V::BlankId: 'a, V::Literal: 'a, I::Resource: 'a; + type ObjectRef<'a> + = Term<&'a RdfId, &'a V::Literal> + where + V::Iri: 'a, + V::BlankId: 'a, + V::Literal: 'a, + I::Resource: 'a; fn subject( &mut self, @@ -502,7 +517,13 @@ where type Subject = I::Resource; type Predicate = I::Resource; type Object = I::Resource; - type ObjectRef<'a> = &'a I::Resource where V::Iri: 'a, V::BlankId: 'a, V::Literal: 'a, I::Resource: 'a; + type ObjectRef<'a> + = &'a I::Resource + where + V::Iri: 'a, + V::BlankId: 'a, + V::Literal: 'a, + I::Resource: 'a; fn subject( &mut self, @@ -715,7 +736,13 @@ where type Subject = Id; type Predicate = IriBuf; type Object = Term; - type ObjectRef<'a> = Term<&'a Id, &'a rdf_types::Literal> where V::Iri: 'a, V::BlankId: 'a, V::Literal: 'a, I::Resource: 'a; + type ObjectRef<'a> + = Term<&'a Id, &'a rdf_types::Literal> + where + V::Iri: 'a, + V::BlankId: 'a, + V::Literal: 'a, + I::Resource: 'a; fn subject( &mut self, @@ -899,13 +926,13 @@ struct QuadSerializer<'a, I: Interpretation, V: Vocabulary, D: Domain> { result: Vec>, } -impl<'a, I: Interpretation, V: Vocabulary, D: Domain> Visitor - for QuadSerializer<'a, I, V, D> +impl> Visitor + for QuadSerializer<'_, I, V, D> { type Ok = Vec>; type Error = IntoQuadsError; - fn default_graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_default_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + crate::LinkedDataGraph, { @@ -917,10 +944,10 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> Visitor graph: None, }; - value.visit_graph(graph_serializer) + value.accept_graph_visitor(graph_serializer) } - fn named_graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_named_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + crate::LinkedDataGraph, { @@ -935,7 +962,7 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> Visitor graph: Some(&graph), }; - value.visit_graph(graph_serializer) + value.accept_graph_visitor(graph_serializer) } fn end(self) -> Result { @@ -951,13 +978,13 @@ struct QuadGraphSerializer<'a, I: Interpretation, V: Vocabulary, D: Domain graph: Option<&'a D::Subject>, } -impl<'a, I: Interpretation, V: Vocabulary, D: Domain> GraphVisitor - for QuadGraphSerializer<'a, I, V, D> +impl> GraphVisitor + for QuadGraphSerializer<'_, I, V, D> { type Ok = (); type Error = IntoQuadsError; - fn subject(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_subject(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + crate::LinkedDataSubject, { @@ -975,7 +1002,7 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> GraphVisitor subject: SubjectOrObject::Subject(&term), }; - value.visit_subject(properties_serializer) + value.accept_subject_visitor(properties_serializer) } fn end(self) -> Result { @@ -1015,13 +1042,13 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> SubjectOrObject<'a, } } -impl<'a, I: Interpretation, V: Vocabulary, D: Domain> SubjectVisitor - for QuadPropertiesSerializer<'a, I, V, D> +impl> SubjectVisitor + for QuadPropertiesSerializer<'_, I, V, D> { type Ok = (); type Error = IntoQuadsError; - fn predicate(&mut self, predicate: &L, value: &T) -> Result<(), Self::Error> + fn visit_predicate(&mut self, predicate: &L, value: &T) -> Result<(), Self::Error> where L: ?Sized + LinkedDataResource, T: ?Sized + crate::LinkedDataPredicateObjects, @@ -1043,10 +1070,10 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> SubjectVisitor predicate: term, }; - value.visit_objects(objects_serializer) + value.accept_objects_visitor(objects_serializer) } - fn reverse_predicate(&mut self, predicate: &L, subjects: &T) -> Result<(), Self::Error> + fn visit_reverse_predicate(&mut self, predicate: &L, subjects: &T) -> Result<(), Self::Error> where L: ?Sized + LinkedDataResource, T: ?Sized + crate::LinkedDataPredicateObjects, @@ -1068,10 +1095,10 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> SubjectVisitor predicate: term, }; - subjects.visit_objects(subjects_serializer) + subjects.accept_objects_visitor(subjects_serializer) } - fn graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataGraph, { @@ -1085,10 +1112,10 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> SubjectVisitor graph: Some(graph), }; - value.visit_graph(graph_serializer) + value.accept_graph_visitor(graph_serializer) } - fn include(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_include(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataSubject, { @@ -1097,7 +1124,7 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> SubjectVisitor .domain .subject(self.vocabulary, self.interpretation, i)?; - value.visit_subject(QuadPropertiesSerializer { + value.accept_subject_visitor(QuadPropertiesSerializer { vocabulary: self.vocabulary, interpretation: self.interpretation, domain: self.domain, @@ -1124,13 +1151,13 @@ struct ObjectsSerializer<'a, I: Interpretation, V: Vocabulary, D: Domain> predicate: D::Predicate, } -impl<'a, I: Interpretation, V: Vocabulary, D: Domain> PredicateObjectsVisitor - for ObjectsSerializer<'a, I, V, D> +impl> PredicateObjectsVisitor + for ObjectsSerializer<'_, I, V, D> { type Ok = (); type Error = IntoQuadsError; - fn object(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_object(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + crate::LinkedDataSubject, { @@ -1147,7 +1174,7 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> PredicateObjectsVisi subject: SubjectOrObject::Object(&term), }; - value.visit_subject(subject_serializer)?; + value.accept_subject_visitor(subject_serializer)?; self.result.push(Quad( self.subject.clone(), self.predicate.clone(), @@ -1172,13 +1199,13 @@ struct ReversePredicateSerializer<'a, I: Interpretation, V: Vocabulary, D: Domai predicate: D::Predicate, } -impl<'a, I: Interpretation, V: Vocabulary, D: Domain> PredicateObjectsVisitor - for ReversePredicateSerializer<'a, I, V, D> +impl> PredicateObjectsVisitor + for ReversePredicateSerializer<'_, I, V, D> { type Ok = (); type Error = IntoQuadsError; - fn object(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_object(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + crate::LinkedDataSubject, { @@ -1196,7 +1223,7 @@ impl<'a, I: Interpretation, V: Vocabulary, D: Domain> PredicateObjectsVisi subject: SubjectOrObject::Subject(&subject), }; - value.visit_subject(subject_serializer)?; + value.accept_subject_visitor(subject_serializer)?; self.result.push(Quad( subject, self.predicate.clone(), diff --git a/src/rdf.rs b/src/rdf.rs index 0e4f772..0863b7e 100644 --- a/src/rdf.rs +++ b/src/rdf.rs @@ -78,7 +78,7 @@ pub enum CowRef<'a, T> { Owned(T), } -impl<'a, T> AsRef for CowRef<'a, T> { +impl AsRef for CowRef<'_, T> { fn as_ref(&self) -> &T { match self { Self::Borrowed(t) => t, @@ -87,7 +87,7 @@ impl<'a, T> AsRef for CowRef<'a, T> { } } -impl<'a, T> Borrow for CowRef<'a, T> { +impl Borrow for CowRef<'_, T> { fn borrow(&self) -> &T { match self { Self::Borrowed(t) => t, @@ -150,7 +150,7 @@ pub trait AsRdfLiteral { &'a self, vocabulary: &V, ty: LiteralTypeRef<'a, V::Iri>, - ) -> CowRdfLiteral; + ) -> CowRdfLiteral<'a, V>; } impl AsRdfLiteral for str { @@ -158,7 +158,7 @@ impl AsRdfLiteral for str { &'a self, _vocabulary: &V, ty: LiteralTypeRef<'a, V::Iri>, - ) -> CowRdfLiteral { + ) -> CowRdfLiteral<'a, V> { CowRdfLiteral::Borrowed(RdfLiteralRef::Any(self, ty)) } } @@ -168,7 +168,7 @@ impl AsRdfLiteral for String { &'a self, vocabulary: &V, ty: LiteralTypeRef<'a, V::Iri>, - ) -> CowRdfLiteral { + ) -> CowRdfLiteral<'a, V> { self.as_str().as_rdf_literal(vocabulary, ty) } } @@ -255,7 +255,7 @@ pub enum RdfLiteralRef<'a, V: IriVocabulary = ()> { Json(&'a json_syntax::Value), } -impl<'a, V: IriVocabulary> RdfLiteralRef<'a, V> { +impl RdfLiteralRef<'_, V> { pub fn into_lexical(self, vocabulary: &V) -> rdf_types::Literal { match self { Self::Any(s, LiteralTypeRef::Any(ty)) => rdf_types::Literal::new( @@ -294,7 +294,7 @@ pub enum CowRdfLiteral<'a, V: IriVocabulary = ()> { Owned(RdfLiteral), } -impl<'a, V: IriVocabulary> CowRdfLiteral<'a, V> { +impl CowRdfLiteral<'_, V> { pub fn into_owned(self) -> RdfLiteral where V::Iri: Clone, diff --git a/src/reference.rs b/src/reference.rs index a737c1c..e5b8284 100644 --- a/src/reference.rs +++ b/src/reference.rs @@ -15,8 +15,9 @@ impl From for Ref { } } -impl> LinkedDataResource - for Ref +impl LinkedDataResource for Ref +where + T: LinkedDataResource, { fn interpretation( &self, @@ -28,44 +29,49 @@ impl> LinkedDataRe } impl LinkedDataSubject for Ref { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: crate::SubjectVisitor, { - serializer.end() + visitor.end() } } -impl> LinkedDataPredicateObjects - for Ref +impl LinkedDataPredicateObjects for Ref +where + T: LinkedDataResource, { - fn visit_objects(&self, mut visitor: S) -> Result + fn accept_objects_visitor(&self, mut visitor: S) -> Result where S: crate::PredicateObjectsVisitor, { - visitor.object(self)?; + visitor.visit_object(self)?; visitor.end() } } -impl> LinkedDataGraph - for Ref +impl LinkedDataGraph for Ref +where + T: LinkedDataResource, { - fn visit_graph(&self, mut visitor: S) -> Result + fn accept_graph_visitor(&self, mut visitor: S) -> Result where S: crate::GraphVisitor, { - visitor.subject(self)?; + visitor.visit_subject(self)?; visitor.end() } } -impl> LinkedData for Ref { - fn visit(&self, mut visitor: S) -> Result +impl LinkedData for Ref +where + T: LinkedDataResource, +{ + fn accept_visitor(&self, mut visitor: S) -> Result where S: crate::Visitor, { - visitor.default_graph(self)?; + visitor.visit_default_graph(self)?; visitor.end() } } diff --git a/src/resource.rs b/src/resource.rs index d741dff..e13de92 100644 --- a/src/resource.rs +++ b/src/resource.rs @@ -111,8 +111,8 @@ pub trait LinkedDataResource { } } -impl<'a, I: Interpretation, V: Vocabulary, T: ?Sized + LinkedDataResource> - LinkedDataResource for &'a T +impl> + LinkedDataResource for &T { fn interpretation( &self, @@ -161,7 +161,10 @@ impl LinkedDataResource for Anonymous { } } -impl LinkedDataResource for Iri { +impl LinkedDataResource for Iri +where + V: IriVocabularyMut, +{ fn interpretation( &self, vocabulary: &mut V, @@ -173,7 +176,10 @@ impl LinkedDataResource LinkedDataResource for IriBuf { +impl LinkedDataResource for IriBuf +where + V: IriVocabularyMut, +{ fn interpretation( &self, vocabulary: &mut V, @@ -185,7 +191,10 @@ impl LinkedDataResource LinkedDataResource for BlankId { +impl LinkedDataResource for BlankId +where + V: BlankIdVocabularyMut, +{ fn interpretation( &self, vocabulary: &mut V, @@ -197,8 +206,9 @@ impl LinkedDataResource } } -impl LinkedDataResource - for BlankIdBuf +impl LinkedDataResource for BlankIdBuf +where + V: BlankIdVocabularyMut, { fn interpretation( &self, @@ -211,12 +221,10 @@ impl LinkedDataResource } } -impl< - V: Vocabulary, - I: Interpretation, - T: LinkedDataResource, - B: LinkedDataResource, - > LinkedDataResource for Id +impl LinkedDataResource for Id +where + T: LinkedDataResource, + B: LinkedDataResource, { fn interpretation( &self, @@ -230,13 +238,11 @@ impl< } } -impl< - V: Vocabulary, - I: Interpretation, - T: LinkedDataResource, - B: LinkedDataResource, - L: LinkedDataResource, - > LinkedDataResource for Term, L> +impl LinkedDataResource for Term, L> +where + T: LinkedDataResource, + B: LinkedDataResource, + L: LinkedDataResource, { fn interpretation( &self, @@ -250,7 +256,7 @@ impl< } } -impl LinkedDataResource for rdf_types::Literal { +impl LinkedDataResource for rdf_types::Literal { fn interpretation( &self, _vocabulary: &mut V, @@ -262,8 +268,9 @@ impl LinkedDataResource for rdf_types::L } } -impl> LinkedDataResource - for Option +impl LinkedDataResource for Option +where + T: LinkedDataResource, { fn interpretation( &self, diff --git a/src/subject.rs b/src/subject.rs index ed10871..9c1ffeb 100644 --- a/src/subject.rs +++ b/src/subject.rs @@ -11,77 +11,78 @@ use crate::{ Context, FromLinkedDataError, LinkedDataGraph, LinkedDataPredicateObjects, LinkedDataResource, }; -/// Serialize a Linked-Data node. pub trait LinkedDataSubject { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor; } impl LinkedDataSubject for () { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - serializer.end() + visitor.end() } } -impl<'a, I: Interpretation, V: Vocabulary, T: ?Sized + LinkedDataSubject> - LinkedDataSubject for &'a T +impl LinkedDataSubject for &T +where + T: ?Sized + LinkedDataSubject, { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - T::visit_subject(self, serializer) + T::accept_subject_visitor(self, visitor) } } -impl> LinkedDataSubject - for Box +impl LinkedDataSubject for Box +where + T: ?Sized + LinkedDataSubject, { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - T::visit_subject(self, serializer) + T::accept_subject_visitor(self, visitor) } } impl LinkedDataSubject for Iri { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - serializer.end() + visitor.end() } } impl LinkedDataSubject for IriBuf { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - serializer.end() + visitor.end() } } impl LinkedDataSubject for BlankId { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - serializer.end() + visitor.end() } } impl LinkedDataSubject for BlankIdBuf { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { - serializer.end() + visitor.end() } } @@ -90,13 +91,13 @@ where T: LinkedDataSubject, B: LinkedDataSubject, { - fn visit_subject(&self, serializer: S) -> Result + fn accept_subject_visitor(&self, visitor: S) -> Result where S: SubjectVisitor, { match self { - Self::Iri(i) => i.visit_subject(serializer), - Self::Blank(b) => b.visit_subject(serializer), + Self::Iri(i) => i.accept_subject_visitor(visitor), + Self::Blank(b) => b.accept_subject_visitor(visitor), } } } @@ -106,62 +107,71 @@ pub trait SubjectVisitor { type Error; /// Visit a predicate of the graph. - fn predicate(&mut self, predicate: &L, objects: &T) -> Result<(), Self::Error> + fn visit_predicate(&mut self, predicate: &L, objects: &T) -> Result<(), Self::Error> where L: ?Sized + LinkedDataResource, T: ?Sized + LinkedDataPredicateObjects; /// Visit a reverse predicate of the graph. - fn reverse_predicate(&mut self, predicate: &L, subjects: &T) -> Result<(), Self::Error> + fn visit_reverse_predicate( + &mut self, + predicate: &L, + subjects: &T, + ) -> Result<(), Self::Error> where L: ?Sized + LinkedDataResource, T: ?Sized + LinkedDataPredicateObjects; - fn graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataGraph; - fn include(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_include(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataSubject; fn end(self) -> Result; } -impl<'s, I: Interpretation, V: Vocabulary, S: SubjectVisitor> SubjectVisitor - for &'s mut S +impl SubjectVisitor for &mut S +where + S: SubjectVisitor, { type Ok = (); type Error = S::Error; - fn predicate(&mut self, predicate: &L, objects: &T) -> Result<(), Self::Error> + fn visit_predicate(&mut self, predicate: &L, objects: &T) -> Result<(), Self::Error> where L: ?Sized + LinkedDataResource, T: ?Sized + LinkedDataPredicateObjects, { - S::predicate(self, predicate, objects) + S::visit_predicate(self, predicate, objects) } - fn reverse_predicate(&mut self, predicate: &L, subjects: &T) -> Result<(), Self::Error> + fn visit_reverse_predicate( + &mut self, + predicate: &L, + subjects: &T, + ) -> Result<(), Self::Error> where L: ?Sized + LinkedDataResource, T: ?Sized + LinkedDataPredicateObjects, { - S::reverse_predicate(self, predicate, subjects) + S::visit_reverse_predicate(self, predicate, subjects) } - fn graph(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_graph(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataGraph, { - S::graph(self, value) + S::visit_graph(self, value) } - fn include(&mut self, value: &T) -> Result<(), Self::Error> + fn visit_include(&mut self, value: &T) -> Result<(), Self::Error> where T: ?Sized + LinkedDataResource + LinkedDataSubject, { - S::include(self, value) + S::visit_include(self, value) } fn end(self) -> Result {