#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum SecondaryEngineGraphSimplificationRequest {
Continue,
Restart,
}
impl SecondaryEngineGraphSimplificationRequest {
#[must_use]
pub const fn to_raw(self) -> i32 {
match self {
Self::Continue => 0,
Self::Restart => 1,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub struct SecondaryEngineOptimizerRequest {
pub(crate) request: SecondaryEngineGraphSimplificationRequest,
pub(crate) subgraph_pair_limit: i32,
}
impl SecondaryEngineOptimizerRequest {
#[must_use]
pub const fn new(
request: SecondaryEngineGraphSimplificationRequest,
subgraph_pair_limit: i32,
) -> Self {
Self {
request,
subgraph_pair_limit,
}
}
#[must_use]
pub const fn keep_going() -> Self {
Self::new(SecondaryEngineGraphSimplificationRequest::Continue, 0)
}
#[must_use]
pub const fn request(&self) -> SecondaryEngineGraphSimplificationRequest {
self.request
}
#[must_use]
pub const fn subgraph_pair_limit(&self) -> i32 {
self.subgraph_pair_limit
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn simplification_request_raw_round_trip() {
assert_eq!(
SecondaryEngineGraphSimplificationRequest::Continue.to_raw(),
0
);
assert_eq!(
SecondaryEngineGraphSimplificationRequest::Restart.to_raw(),
1
);
}
#[test]
fn keep_going_default() {
let r = SecondaryEngineOptimizerRequest::keep_going();
assert_eq!(
r.request,
SecondaryEngineGraphSimplificationRequest::Continue
);
assert_eq!(r.subgraph_pair_limit, 0);
}
}