Replay

Struct Replay 

Source
pub struct Replay {
    pub notes: Vec<ReplayNote>,
}
Expand description

Replay data, contains ReplayNote

Some replays don’t have tick information. Some replays have neither tick nor note type information. Some replays have neither tick nor note type nor lane information.

There are some guarantees (judging after expirementation with EO):

  • If one replay note has a certain piece of data, all other replay notes in that replay will will also have that piece of data.
  • If a replay has note type information, it will definitely also have lane information.
    If a replay has tick information, it will definitely also have both note type and lane information.

Fields§

§notes: Vec<ReplayNote>

Implementations§

Source§

impl Replay

Source

pub fn split_into_lanes(&self) -> Option<[NoteAndHitSeconds; 4]>

Splits the replay into arrays that contain the note and hit seconds, respectively. Note: if a note was missed, it has no entry in the hit seconds vector - logically, because there was no hit, hence the miss. A consequence of this is that the nth note second array will probably not have the same length as the nth hit second array.

Also, this function will discard anything not related to straight tapping, that is, mines, lifts… Also, everything above 4k will be discarded as well.

If this replay file adheres to the usual Etterna replay ordering, the second lists (hits) will be sorted ascendingly.

If this replay doesn’t have lane and note_type information, None is returned.

Source

pub fn split_into_notes_and_hits(&self) -> Option<NoteAndHitSeconds>

Like Self::split_into_lanes, but it doesn’t split by lane. Instead, everything is put into one big vector instead.

Even non-4k notes are included in this function’s result!

If this replay doesn’t have note type information, None is returned.

Trait Implementations§

Source§

impl Clone for Replay

Source§

fn clone(&self) -> Replay

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Replay

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Replay

Source§

fn default() -> Replay

Returns the “default value” for a type. Read more
Source§

impl PartialEq for Replay

Source§

fn eq(&self, other: &Replay) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl SimpleReplay for Replay

Source§

fn iter_hits(&self) -> Box<dyn Iterator<Item = Hit> + '_>

Source§

fn longest_combo(&self, hit_filter: impl FnMut(Hit) -> bool) -> u32

Finds the longest combo of notes evaluating to true in the given closure Read more
Source§

fn tap_judgements(&self, judge: &Judge) -> TapJudgements

Generate a crate::TapJudgements instance of this replay
Source§

fn mean_deviation(&self) -> f32

Source§

impl StructuralPartialEq for Replay

Auto Trait Implementations§

§

impl Freeze for Replay

§

impl RefUnwindSafe for Replay

§

impl Send for Replay

§

impl Sync for Replay

§

impl Unpin for Replay

§

impl UnwindSafe for Replay

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,