replaceinds

Function replaceinds 

Source
pub fn replaceinds<I: IndexLike>(
    indices: Vec<I>,
    replacements: &[(I, I)],
) -> Result<Vec<I>, ReplaceIndsError>
Expand description

Replace indices in a collection based on ID matching.

This corresponds to ITensors.jl’s replaceinds function. It replaces indices in indices that match (by ID) any of the (old, new) pairs in replacements. The replacement index must have the same dimension as the original.

§Arguments

  • indices - Collection of indices to modify
  • replacements - Pairs of (old_index, new_index) where indices matching old_index.id are replaced with new_index

§Returns

A new vector with replacements applied, or an error if any replacement has a dimension mismatch.

§Errors

Returns ReplaceIndsError::SpaceMismatch if any replacement index has a different dimension than the original.

§Example

use tensor4all_core::index::{DefaultIndex as Index, DynId};
use tensor4all_core::index_ops::replaceinds;

let i = Index::new_dyn(2);
let j = Index::new_dyn(3);
let k = Index::new_dyn(4);
let new_j = Index::new_dyn(3);  // Same size as j

let indices = vec![i.clone(), j.clone(), k.clone()];
let replacements = vec![(j.clone(), new_j.clone())];

let replaced = replaceinds(indices, &replacements).unwrap();
assert_eq!(replaced.len(), 3);
assert_eq!(replaced[1].id, new_j.id);