pub struct BeginSynchronizedUpdate;
Expand description

A command that instructs the terminal emulator to begin a synchronized frame.

Notes

  • Commands must be executed/queued for execution otherwise they do nothing.
  • Use EndSynchronizedUpdate command to leave the entered alternate screen.

When rendering the screen of the terminal, the Emulator usually iterates through each visible grid cell and renders its current state. With applications updating the screen a at higher frequency this can cause tearing.

This mode attempts to mitigate that.

When the synchronization mode is enabled following render calls will keep rendering the last rendered state. The terminal Emulator keeps processing incoming text and sequences. When the synchronized update mode is disabled again the renderer may fetch the latest screen buffer state again, effectively avoiding the tearing effect by unintentionally rendering in the middle a of an application screen update.

Examples

use std::io::{self, Write};
use crossterm::{execute, terminal::{BeginSynchronizedUpdate, EndSynchronizedUpdate}};

fn main() -> io::Result<()> {
    execute!(io::stdout(), BeginSynchronizedUpdate)?;

    // Anything performed here will not be rendered until EndSynchronizedUpdate is called.

    execute!(io::stdout(), EndSynchronizedUpdate)?;
    Ok(())
}

Trait Implementations§

source§

impl Clone for BeginSynchronizedUpdate

source§

fn clone(&self) -> BeginSynchronizedUpdate

Returns a copy 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 Command for BeginSynchronizedUpdate

source§

fn write_ansi(&self, f: &mut impl Write) -> Result

Write an ANSI representation of this command to the given writer. An ANSI code can manipulate the terminal by writing it to the terminal buffer. However, only Windows 10 and UNIX systems support this. Read more
source§

fn execute_winapi(&self) -> Result<()>

Execute this command. Read more
source§

fn is_ansi_code_supported(&self) -> bool

Returns whether the ANSI code representation of this command is supported by windows. Read more
source§

impl Debug for BeginSynchronizedUpdate

source§

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

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

impl PartialEq<BeginSynchronizedUpdate> for BeginSynchronizedUpdate

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for BeginSynchronizedUpdate

source§

impl Eq for BeginSynchronizedUpdate

source§

impl StructuralEq for BeginSynchronizedUpdate

source§

impl StructuralPartialEq for BeginSynchronizedUpdate

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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 Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.