Skip to main content

main/
main.rs

1//! An example demonstrating how to use the `local_issues_lib` crate.
2
3use local_issues_lib::{Comment, Issue, Issues, user::User};
4
5fn main() {
6    // 1. Create a new Issues collection
7    let mut issues = Issues::new();
8    println!("Initial issues count: {}", issues.get_list().len());
9
10    // 2. Create a User
11    let user = User::new("Alice", "alice@example.com");
12
13    // 3. Create a new Issue
14    let mut new_issue = Issue::new("Add better documentation", user.clone(), vec!["Enhance"]);
15
16    // 4. Add a Comment to the issue
17    let comment = Comment::new("I think we should add more examples.", user.clone());
18    new_issue.comment(comment);
19
20    // 5. Add the issue to the collection
21    let issue_index = issues.add_new_issue(new_issue);
22    println!("Added new issue at index: {}", issue_index);
23
24    // 6. Print all issues
25    println!("\nAll Issues:");
26    for (i, issue) in issues.get_list().iter().enumerate() {
27        println!("Issue #{}: {:?}", i, issue);
28    }
29
30    // 7. Find an issue by title
31    if let Some(found_issues) = issues.find_from_title("documentation") {
32        println!(
33            "\nFound {} issues matching 'documentation'",
34            found_issues.len()
35        );
36    }
37
38    // 8. Fork an issue
39    if let Some(forked_index) = issues.fork(1) {
40        println!("\nForked issue #1 to new issue #{}", forked_index);
41        let forked_issue = issues.get(forked_index).unwrap();
42        println!("Forked issue details: {:?}", forked_issue);
43
44        let original_issue = issues.get(1).unwrap();
45        println!("Original issue status after fork: {:?}", original_issue);
46    }
47}