Implement OwnershipGraph for Borrowing Rules in Rust #10
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.
In this PR, we have implemented the
OwnershipGraph
data structure to enforce borrowing rules in this language.Changes made:
Implementation of
OwnershipGraph
: We've introduced a new data structure,OwnershipGraph
, which stores variables and their borrowed values in acollections::BTreeMap
to maintain a consistent output order. This helps us to understand and verify the borrowing rules for each variable in the language.Introduction of
build_ownership_graph
function: This function takes a vector ofStatements
as an argument and generates anOwnershipGraph
. This graph will be used to enforce borrowing rules and prevent multiple mutable references or simultaneous mutable and immutable references.Writing Test Cases: We have added comprehensive test cases for the
build_ownership_graph function
. These tests ensure that our implementation correctly handles variable declarations, borrowing, and the restrictions of Rust's ownership rules. Also, modefied other files tests too.TODO