Implement Links trait for Doublets instead of trait inheritance#37
Open
Implement Links trait for Doublets instead of trait inheritance#37
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #6
This change addresses issue #6 by reversing the trait relationship: - Remove inheritance from Doublets<T>: Links<T> - Add blanket implementation impl<T, D: Doublets<T>> Links<T> for D - Move core Links methods into Doublets trait - Update Store to only implement Doublets, getting Links automatically This approach follows the issue suggestion to "impl Links for Doublets" instead of "Doublets for Links", providing better error handling as mentioned in the data-rs repository commit a2cadfa. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 Summary
This PR implements the solution for issue #6 by reversing the trait relationship between
LinksandDoubletstraits.📋 Issue Reference
Fixes #6
🔄 Changes Made
1. Trait Hierarchy Refactoring
pub trait Doublets<T: LinkType>: Links<T>pub trait Doublets<T: LinkType>: Send + Sync2. Core Methods Integration
Moved all core
Linkstrait methods into theDoubletstrait:constants(&self) -> &LinksConstants<T>count_links(&self, query: &[T]) -> Tcreate_links(...),each_links(...),update_links(...),delete_links(...)get_link(&self, index: T) -> Option<Link<T>>3. Blanket Implementation
Added automatic
Linksimplementation for any type implementingDoublets:4. Store Implementation Update
Links<T>andDoublets<T>forStoreDoublets<T>, automatically getsLinks<T>via blanket impl🎉 Benefits
data-rsrepositoryimpl Links for Doubletsinstead ofDoublets for LinksLinksimplementation for allDoubletstypes🧪 Testing
The implementation maintains full API compatibility. All existing code using either
LinksorDoubletstraits will continue to work without changes.🔗 Related
🤖 Generated with Claude Code