quantrs2_device/quantum_network/
error_correction.rs

1//! Error correction and fault tolerance for quantum networks
2
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::Duration;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ForwardErrorCorrectionConfig {
9    pub fec_algorithm: String,
10    pub code_rate: f64,
11    pub interleaving: bool,
12}
13
14impl Default for ForwardErrorCorrectionConfig {
15    fn default() -> Self {
16        Self {
17            fec_algorithm: "Reed-Solomon".to_string(),
18            code_rate: 0.8,
19            interleaving: true,
20        }
21    }
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct ARQConfig {
26    pub arq_type: String,
27    pub timeout_value: Duration,
28    pub maximum_retransmissions: u32,
29}
30
31impl Default for ARQConfig {
32    fn default() -> Self {
33        Self {
34            arq_type: "Go-Back-N".to_string(),
35            timeout_value: Duration::from_millis(100),
36            maximum_retransmissions: 5,
37        }
38    }
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct HybridErrorCorrectionConfig {
43    pub fec_arq_combination: String,
44    pub adaptive_switching: bool,
45    pub performance_threshold: f64,
46    pub optimization_strategy: String,
47}
48
49impl Default for HybridErrorCorrectionConfig {
50    fn default() -> Self {
51        Self {
52            fec_arq_combination: "parallel".to_string(),
53            adaptive_switching: true,
54            performance_threshold: 0.95,
55            optimization_strategy: "adaptive".to_string(),
56        }
57    }
58}