vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
use std::fs;
use std::io;
use std::path::{Path, PathBuf};
use std::time::{Duration, Instant};
use crate::spec::types::MutationClass;
use super::mutation_cargo::{assert_source_matches_original, run_cargo_test};
pub use super::probe::{canary_plus_to_minus, mutation_probe};

/// Error returned by `AppliedMutation::apply` when the mutation does
/// not apply to the given source. Not a test failure — a skip.
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MutationApplyError {
    /// The mutation's target pattern was not found in the source.
    NotApplicable {
        /// Why the mutation did not apply.
        reason: String,
    },
    /// Applying the mutation would produce unambiguously invalid
    /// syntax. The gate skips these rather than pretending to run them.
    WouldProduceInvalidSyntax {
        /// Why the mutation would break syntax.
        reason: String,
    },
}