Skip to main content

luaur_analysis/records/
build_queue_work_state.rs

1use crate::records::build_queue_item::BuildQueueItem;
2use alloc::boxed::Box;
3use alloc::vec::Vec;
4use std::sync::{Condvar, Mutex};
5
6/// C++: `using Task = std::function<void()>;` — a single unit of queued work.
7pub type Task = Box<dyn FnOnce() + Send>;
8
9pub struct BuildQueueWorkState {
10    // C++: `std::function<void(std::function<void()> task)> executeTask_DEPRECATED;`
11    pub execute_task_deprecated: Option<Box<dyn Fn(Task) + Send + Sync>>,
12    // C++: `std::function<void(std::vector<std::function<void()>> tasks)> executeTasks;`
13    pub execute_tasks: Option<Box<dyn Fn(Vec<Task>) + Send + Sync>>,
14
15    pub build_queue_items: Vec<BuildQueueItem>,
16    pub mtx: Mutex<()>,
17    pub cv: Condvar,
18    pub ready_queue_items: Vec<usize>,
19    pub processing: usize,
20    pub remaining: usize,
21}