usecrate::progress::Progress;usecrate::TrellisFloat;/// The user-defined state must implement this trait to be used as part of the trellis calculation
/// loop
////// All other state methods are auto-implemented on a type wrapping the user-defined state.
pubtraitUserState{typeFloat: TrellisFloat;// type Param;
fnis_initialised(&self)->bool{true}// fn get_param(&self) -> Option<&Self::Param>;
fnprogress(&self)->Progress<Self::Float>;}pubtraitSnapshotable{typeSnapshot:Clone+Send+Sync+'static;fnsnapshot(&self)->Self::Snapshot;}pubtraitStateRestorer<S: Snapshotable> {fnrestore(snapshot:S::Snapshot)-> S;}