3. What is the output of the following Rust code snippet that schedules jobs with deadlines and profits?
struct Job { id: char, deadline: usize, profit: usize }
fn job_scheduling(jobs: &mut Vec<Job>) -> Vec<char> {
jobs.sort_by(|a, b| b.profit.cmp(&a.profit));
let max_deadline = jobs.iter().map(|j| j.deadline).max().unwrap_or(0);
let mut slots = vec![false; max_deadline];
let mut result = Vec::new();
for job in jobs.iter() {
for slot in (0..job.deadline).rev() {
if !slots[slot] {
slots[slot] = true;
result.push(job.id);
break;
}
}
}
result
}
fn main() {
let mut jobs = vec![
Job { id: 'A', deadline: 2, profit: 100 },
Job { id: 'B', deadline: 1, profit: 19 },
Job { id: 'C', deadline: 2, profit: 27 },
Job { id: 'D', deadline: 1, profit: 25 },
Job { id: 'E', deadline: 3, profit: 15 },
];
let scheduled = job_scheduling(&mut jobs);
println!("{:?}", scheduled);
}