use super::{
error::RangeError,
states::{AliveElements, Range},
SequencePart,
};
use crate::sequence::{states::WithTransitionFunction, Sequence};
pub type ParentSequenceRef<'a, T, I> = &'a Sequence<T, I, WithTransitionFunction<T, I>>;
pub type ParentSequenceRefMut<'a, T, I> =
&'a mut Sequence<T, I, WithTransitionFunction<T, I>>;
pub type AliveElementsPart<'a, T, I> =
SequencePart<AliveElements, ParentSequenceRef<'a, T, I>>;
pub type RangePart<P> = SequencePart<Range, P>;
pub type RangePartImmut<'a, T, I> = RangePart<ParentSequenceRef<'a, T, I>>;
pub type RangePartMut<'a, T, I> = RangePart<ParentSequenceRefMut<'a, T, I>>;
pub type RangePartImmutResult<'a, T, I> = Result<RangePartImmut<'a, T, I>, RangeError>;
pub type RangePartMutResult<'a, T, I> = Result<RangePartMut<'a, T, I>, RangeError>;