pub struct TimingOverlapRule;Available on crate feature
analysis only.Expand description
Rule for detecting timing overlaps between dialogue events
Uses sweep-line algorithm for efficient O(n log n) overlap detection. Overlapping events can cause rendering conflicts where multiple subtitles appear simultaneously, potentially causing readability issues.
§Performance
- Time complexity: O(n log n) via sweep-line algorithm
- Memory: O(n) for temporary data structures
- Target: <1ms for 1000 events on typical hardware
§Example
use ass_core::analysis::linting::rules::timing_overlap::TimingOverlapRule;
use ass_core::analysis::linting::LintRule;
use ass_core::{Script, ScriptAnalysis};
let script = Script::parse(r#"
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,First event
Dialogue: 0,0:00:03.00,0:00:08.00,Default,,0,0,0,,Overlapping event
"#)?;
let analysis = ScriptAnalysis::analyze(&script)?;
let rule = TimingOverlapRule;
let issues = rule.check_script(&analysis);
assert!(!issues.is_empty()); // Should detect the overlapTrait Implementations§
Source§impl LintRule for TimingOverlapRule
impl LintRule for TimingOverlapRule
Source§fn description(&self) -> &'static str
fn description(&self) -> &'static str
Rule description.
Source§fn default_severity(&self) -> IssueSeverity
fn default_severity(&self) -> IssueSeverity
Default severity level.
Source§fn category(&self) -> IssueCategory
fn category(&self) -> IssueCategory
Issue category this rule checks for.
Source§fn check_script(&self, analysis: &ScriptAnalysis<'_>) -> Vec<LintIssue>
fn check_script(&self, analysis: &ScriptAnalysis<'_>) -> Vec<LintIssue>
Check script and return issues.
Auto Trait Implementations§
impl Freeze for TimingOverlapRule
impl RefUnwindSafe for TimingOverlapRule
impl Send for TimingOverlapRule
impl Sync for TimingOverlapRule
impl Unpin for TimingOverlapRule
impl UnwindSafe for TimingOverlapRule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more