You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
davhojt 4addc9b90e docs(order_books) correct grammar 2 years ago
..
README.md docs(order_books) correct grammar 2 years ago

README.md

order_books

Instructions

Build a module named library which contains two sub-modules:

  • writers: which contains:
    • Writer: a structure with:
      • first_name: String
      • last_name: String
      • books: Vec<Book>
  • books: which contains:
    • Book: a structure with:
      • title: String
      • year: u64 as its year of publication

A function order_books should be created (outside of the previous modules which receives a Writer, and orders the set of books alphabetically.

Expected Functions and Structs

You'll need to complete the function and structs, and add them to the appropriate place, so that the main in the usage can be successfully compiled and run.

pub struct Writer {

}
pub struct Book {

}
pub fn order_books(writer: &mut Writer) {

}

Example

Here is a program to test your function and structs:

pub use library::writers::Writer;
pub use library::books::Book;

fn main() {
    let mut writer_a = Writer {
        first_name: "William".to_string(),
        last_name: "Shakespeare".to_string(),
        books: vec![
            Book {
                title: "Hamlet".to_string(),
                year: 1600,
            },
            Book {
                title: "Othelo".to_string(),
                year: 1603,
            },
            Book {
                title: "Romeo and Juliet".to_string(),
                year: 1593,
            },
            Book {
                title: "MacBeth".to_string(),
                year: 1605,
            },
        ],
    };

    println!("Before ordering");
    for b in &writer_a.books {
        println!("{:?}", b.title);
    }

    order_books(&mut writer_a);

    println!("\nAfter ordering");
    for b in writer_a.books {
        println!("{:?}", b.title);
    }
}

And its output:

$ cargo run
Before ordering
"Hamlet"
"Othelo"
"Romeo and Juliet"
"MacBeth"

After ordering
"Hamlet"
"MacBeth"
"Othelo"
"Romeo and Juliet"
$