quantrs2_device/quantum_network/
teleportation.rs

1//! Quantum teleportation protocols and configurations
2
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::Duration;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct StatePreparationConfig {
9    pub preparation_method: String,
10    pub state_fidelity: f64,
11    pub verification_protocol: String,
12}
13
14impl Default for StatePreparationConfig {
15    fn default() -> Self {
16        Self {
17            preparation_method: "direct".to_string(),
18            state_fidelity: 0.99,
19            verification_protocol: "process_tomography".to_string(),
20        }
21    }
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct TeleportationMeasurementConfig {
26    pub measurement_basis: String,
27    pub measurement_efficiency: f64,
28    pub detection_probability: f64,
29    pub timing_precision: Duration,
30}
31
32impl Default for TeleportationMeasurementConfig {
33    fn default() -> Self {
34        Self {
35            measurement_basis: "Bell".to_string(),
36            measurement_efficiency: 0.95,
37            detection_probability: 0.9,
38            timing_precision: Duration::from_nanos(100),
39        }
40    }
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct TeleportationClassicalConfig {
45    pub communication_channel: String,
46    pub message_encoding: String,
47    pub compression_enabled: bool,
48}
49
50impl Default for TeleportationClassicalConfig {
51    fn default() -> Self {
52        Self {
53            communication_channel: "optical".to_string(),
54            message_encoding: "binary".to_string(),
55            compression_enabled: true,
56        }
57    }
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct TeleportationFidelityConfig {
62    pub minimum_fidelity: f64,
63    pub average_fidelity_target: f64,
64    pub fidelity_estimation_method: String,
65    pub verification_shots: u32,
66}
67
68impl Default for TeleportationFidelityConfig {
69    fn default() -> Self {
70        Self {
71            minimum_fidelity: 0.9,
72            average_fidelity_target: 0.95,
73            fidelity_estimation_method: "process_tomography".to_string(),
74            verification_shots: 1000,
75        }
76    }
77}