pub struct NeutralAtomDevice {
pub client: NeutralAtomClient,
pub device_id: String,
pub config: NeutralAtomDeviceConfig,
}Fields§
§client: NeutralAtomClient§device_id: String§config: NeutralAtomDeviceConfigImplementations§
Source§impl NeutralAtomDevice
impl NeutralAtomDevice
pub fn new( client: NeutralAtomClient, device_id: String, config: NeutralAtomDeviceConfig, ) -> Self
pub fn with_config(self, config: NeutralAtomDeviceConfig) -> Self
Trait Implementations§
Source§impl CircuitExecutor for NeutralAtomDevice
impl CircuitExecutor for NeutralAtomDevice
Source§fn execute_circuit<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuit: &'life1 Circuit<N>,
shots: usize,
) -> Pin<Box<dyn Future<Output = DeviceResult<CircuitResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute_circuit<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuit: &'life1 Circuit<N>,
shots: usize,
) -> Pin<Box<dyn Future<Output = DeviceResult<CircuitResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute a quantum circuit on the device
Source§fn execute_circuits<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuits: Vec<&'life1 Circuit<N>>,
shots: usize,
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<CircuitResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute_circuits<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuits: Vec<&'life1 Circuit<N>>,
shots: usize,
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<CircuitResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute multiple circuits in parallel
Source§fn can_execute_circuit<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuit: &'life1 Circuit<N>,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn can_execute_circuit<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuit: &'life1 Circuit<N>,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check if a circuit can be executed on the device
Source§fn estimated_queue_time<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
_circuit: &'life1 Circuit<N>,
) -> Pin<Box<dyn Future<Output = DeviceResult<Duration>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn estimated_queue_time<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
_circuit: &'life1 Circuit<N>,
) -> Pin<Box<dyn Future<Output = DeviceResult<Duration>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get estimated queue time for a circuit execution
Source§impl Clone for NeutralAtomDevice
impl Clone for NeutralAtomDevice
Source§fn clone(&self) -> NeutralAtomDevice
fn clone(&self) -> NeutralAtomDevice
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for NeutralAtomDevice
impl Debug for NeutralAtomDevice
Source§impl NeutralAtomQuantumDevice for NeutralAtomDevice
impl NeutralAtomQuantumDevice for NeutralAtomDevice
Source§fn system_type<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<NeutralAtomSystemType>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn system_type<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<NeutralAtomSystemType>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the neutral atom system type
Source§fn atom_count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn atom_count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the number of atoms in the array
Source§fn atom_spacing<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn atom_spacing<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the atom spacing
Source§fn state_encoding<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<AtomStateEncoding>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn state_encoding<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<AtomStateEncoding>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the state encoding scheme
Source§fn blockade_radius<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<Option<f64>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn blockade_radius<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<Option<f64>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the Rydberg blockade radius
Source§fn supports_rydberg_gates<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn supports_rydberg_gates<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check if Rydberg gates are supported
Source§fn supports_tweezer_manipulation<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn supports_tweezer_manipulation<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check if optical tweezer manipulation is supported
Source§fn loading_efficiency<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn loading_efficiency<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get loading efficiency
Source§fn gate_fidelity<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn gate_fidelity<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get gate fidelity
Source§fn execute_neutral_atom_circuit<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuit: &'life1 Circuit<N>,
shots: usize,
config: Option<NeutralAtomDeviceConfig>,
) -> Pin<Box<dyn Future<Output = DeviceResult<NeutralAtomCircuitResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute_neutral_atom_circuit<'life0, 'life1, 'async_trait, const N: usize>(
&'life0 self,
circuit: &'life1 Circuit<N>,
shots: usize,
config: Option<NeutralAtomDeviceConfig>,
) -> Pin<Box<dyn Future<Output = DeviceResult<NeutralAtomCircuitResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute a neutral atom circuit with detailed results
Source§fn load_atoms<'life0, 'life1, 'async_trait>(
&'life0 self,
_positions: &'life1 [(f64, f64, f64)],
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<bool>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn load_atoms<'life0, 'life1, 'async_trait>(
&'life0 self,
_positions: &'life1 [(f64, f64, f64)],
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<bool>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Load atoms into the trap array
Source§fn move_atoms<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_atom_indices: &'life1 [usize],
_new_positions: &'life2 [(f64, f64, f64)],
) -> Pin<Box<dyn Future<Output = DeviceResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn move_atoms<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_atom_indices: &'life1 [usize],
_new_positions: &'life2 [(f64, f64, f64)],
) -> Pin<Box<dyn Future<Output = DeviceResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Move atoms using optical tweezers
Source§fn rydberg_excitation<'life0, 'life1, 'async_trait>(
&'life0 self,
atom_indices: &'life1 [usize],
_excitation_time: Duration,
_laser_power: f64,
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<bool>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn rydberg_excitation<'life0, 'life1, 'async_trait>(
&'life0 self,
atom_indices: &'life1 [usize],
_excitation_time: Duration,
_laser_power: f64,
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<bool>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Perform Rydberg excitation
Source§fn global_rydberg_operation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_operation: &'life1 str,
_parameters: &'life2 HashMap<String, f64>,
) -> Pin<Box<dyn Future<Output = DeviceResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn global_rydberg_operation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_operation: &'life1 str,
_parameters: &'life2 HashMap<String, f64>,
) -> Pin<Box<dyn Future<Output = DeviceResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Perform global Rydberg operations
Source§fn measure_atom_states<'life0, 'life1, 'async_trait>(
&'life0 self,
atom_indices: &'life1 [usize],
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn measure_atom_states<'life0, 'life1, 'async_trait>(
&'life0 self,
atom_indices: &'life1 [usize],
) -> Pin<Box<dyn Future<Output = DeviceResult<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Measure atom states
Source§fn calculate_atom_correlations<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
atom_pairs: &'life1 [(usize, usize)],
_correlation_type: &'life2 str,
) -> Pin<Box<dyn Future<Output = DeviceResult<HashMap<String, f64>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn calculate_atom_correlations<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
atom_pairs: &'life1 [(usize, usize)],
_correlation_type: &'life2 str,
) -> Pin<Box<dyn Future<Output = DeviceResult<HashMap<String, f64>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Calculate atom correlations
Source§fn estimate_fidelity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_target_state: &'life1 str,
_measurement_data: &'life2 NeutralAtomMeasurementData,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn estimate_fidelity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_target_state: &'life1 str,
_measurement_data: &'life2 NeutralAtomMeasurementData,
) -> Pin<Box<dyn Future<Output = DeviceResult<f64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Estimate state fidelity
Source§impl QuantumDevice for NeutralAtomDevice
impl QuantumDevice for NeutralAtomDevice
Source§fn is_available<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn is_available<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check if the device is available for use
Source§fn qubit_count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn qubit_count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the number of qubits on the device
Source§fn properties<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<HashMap<String, String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn properties<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<HashMap<String, String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get device properties such as error rates, connectivity, etc.
Source§fn is_simulator<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn is_simulator<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DeviceResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check if the device is a simulator
Auto Trait Implementations§
impl Freeze for NeutralAtomDevice
impl !RefUnwindSafe for NeutralAtomDevice
impl Send for NeutralAtomDevice
impl Sync for NeutralAtomDevice
impl Unpin for NeutralAtomDevice
impl !UnwindSafe for NeutralAtomDevice
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.