1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-29 04:40:03 -04:00

Update MSRV from 1.92 to 1.95 (#8348)

No particular reason

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Emil Ernerfeldt
2026-07-28 01:37:03 -07:00
committed by GitHub
parent 8fc323fbcf
commit b730815797
47 changed files with 75 additions and 75 deletions

View File

@@ -38,7 +38,7 @@ jobs:
with:
profile: minimal
target: wasm32-unknown-unknown
toolchain: 1.92.0
toolchain: 1.95.0
override: true
- uses: Swatinem/rust-cache@v2

View File

@@ -20,7 +20,7 @@ jobs:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:

View File

@@ -5,7 +5,7 @@ name: Rust
env:
RUSTFLAGS: -D warnings
RUSTDOCFLAGS: -D warnings
NIGHTLY_VERSION: nightly-2025-09-16
NIGHTLY_VERSION: nightly-2026-04-02
jobs:
fmt-crank-check-test:
@@ -19,7 +19,7 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
- name: Install packages (Linux)
if: runner.os == 'Linux'
@@ -74,7 +74,7 @@ jobs:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
targets: wasm32-unknown-unknown
- run: sudo apt-get update && sudo apt-get install libgtk-3-dev libatk1.0-dev
@@ -148,7 +148,7 @@ jobs:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v2
with:
rust-version: "1.92.0"
rust-version: "1.95.0"
log-level: error
command: check
arguments: --target ${{ matrix.target }}
@@ -164,7 +164,7 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
targets: aarch64-linux-android
- name: Set up cargo cache
@@ -186,7 +186,7 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
targets: aarch64-apple-ios
- name: Set up cargo cache
@@ -206,7 +206,7 @@ jobs:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
- name: Set up cargo cache
uses: Swatinem/rust-cache@v2
@@ -228,7 +228,7 @@ jobs:
lfs: true
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.92.0
toolchain: 1.95.0
- name: Set up cargo cache
uses: Swatinem/rust-cache@v2

View File

@@ -24,7 +24,7 @@ members = [
[workspace.package]
edition = "2024"
license = "MIT OR Apache-2.0"
rust-version = "1.92"
rust-version = "1.95"
version = "0.35.0"
@@ -205,6 +205,7 @@ cloned_instead_of_copied = "warn"
coerce_container_to_any = "warn"
dbg_macro = "warn"
debug_assert_with_mut_call = "warn"
decimal_bitwise_operands = "warn"
default_union_representation = "warn"
derive_partial_eq_without_eq = "warn"
disallowed_macros = "warn" # See clippy.toml
@@ -217,9 +218,10 @@ doc_comment_double_space_linebreaks = "warn"
doc_include_without_cfg = "warn"
doc_link_with_quotes = "warn"
doc_markdown = "warn"
duration_suboptimal_units = "warn"
elidable_lifetime_names = "warn"
empty_enum = "warn"
empty_enum_variants_with_brackets = "warn"
empty_enums = "warn"
empty_line_after_outer_attr = "warn"
enum_glob_use = "warn"
equatable_if_let = "warn"
@@ -270,6 +272,7 @@ lossy_float_literal = "warn"
macro_use_imports = "warn"
manual_assert = "warn"
manual_clamp = "warn"
manual_ilog2 = "warn"
manual_instant_elapsed = "warn"
manual_is_power_of_two = "warn"
manual_is_variant_and = "warn"
@@ -299,10 +302,12 @@ needless_for_each = "warn"
needless_pass_by_ref_mut = "warn"
needless_pass_by_value = "warn"
needless_raw_string_hashes = "warn"
needless_type_cast = "warn"
negative_feature_names = "warn"
non_std_lazy_statics = "warn"
non_zero_suggestions = "warn"
nonstandard_macro_braces = "warn"
only_used_in_recursion = "warn"
option_as_ref_cloned = "warn"
option_option = "warn"
or_fun_call = "warn"
@@ -325,6 +330,7 @@ ref_patterns = "warn"
rest_pat_in_fully_bound_structs = "warn"
return_and_then = "warn"
same_functions_in_if_condition = "warn"
same_length_and_capacity = "warn"
self_only_used_in_recursion = "warn"
semicolon_if_nothing_returned = "warn"
set_contains_or_insert = "warn"
@@ -341,6 +347,7 @@ suspicious_command_arg_space = "warn"
suspicious_xor_used_as_pow = "warn"
todo = "warn"
too_long_first_doc_paragraph = "warn"
too_many_arguments = "warn"
trailing_empty_array = "warn"
trait_duplication_in_bounds = "warn"
transmute_ptr_to_ptr = "warn"
@@ -358,6 +365,7 @@ unnecessary_safety_doc = "warn"
unnecessary_self_imports = "warn"
unnecessary_semicolon = "warn"
unnecessary_struct_initialization = "warn"
unnecessary_trailing_comma = "warn"
unnecessary_wraps = "warn"
unnested_or_patterns = "warn"
unused_async = "warn"
@@ -382,6 +390,7 @@ too_many_lines = "allow"
# These are meh:
assigning_clones = "allow" # No please
cast_possible_truncation = "allow" # too many hits
let_underscore_must_use = "allow"
let_underscore_untyped = "allow"
manual_range_contains = "allow" # this one is just worse imho

View File

@@ -3,7 +3,7 @@
# -----------------------------------------------------------------------------
# Section identical to scripts/clippy_wasm/clippy.toml:
msrv = "1.92"
msrv = "1.95"
allow-unwrap-in-tests = true

View File

@@ -122,13 +122,13 @@ impl<T: WinitApp> WinitAppWrapper<T> {
event_result
}
EventResult::RepaintNow(window_id) => {
log::trace!("RepaintNow of {window_id:?}",);
log::trace!("RepaintNow of {window_id:?}");
self.windows_next_repaint_times
.insert(window_id, Instant::now());
event_result
}
EventResult::RepaintNext(window_id) => {
log::trace!("RepaintNext of {window_id:?}",);
log::trace!("RepaintNext of {window_id:?}");
self.windows_next_repaint_times
.insert(window_id, Instant::now());
event_result

View File

@@ -3506,7 +3506,7 @@ impl Context {
if !is_visible {
continue;
}
let text = format!("{} - {:?}", layer_id.short_debug_format(), area.rect(),);
let text = format!("{} - {:?}", layer_id.short_debug_format(), area.rect());
// TODO(emilk): `Sense::hover_highlight()`
let response =
ui.add(Label::new(RichText::new(text).monospace()).sense(Sense::click()));

View File

@@ -201,8 +201,6 @@ fn contains_circle(interact_rect: emath::Rect, pos: Pos2, radius: f32) -> bool {
}
fn hit_test_on_close(close: &[WidgetRect], pos: Pos2) -> WidgetHits {
#![expect(clippy::collapsible_else_if)]
// First find the best direct hits:
let hit_click = find_closest_within(
close.iter().copied().filter(|w| w.sense.senses_click()),

View File

@@ -3,7 +3,7 @@
//! Try the live web demo: <https://www.egui.rs/#demo>. Read more about egui at <https://github.com/emilk/egui>.
//!
//! `egui` is in heavy development, with each new version having breaking changes.
//! You need to have rust 1.92.0 or later to use `egui`.
//! You need to have rust 1.95.0 or later to use `egui`.
//!
//! To quickly get started with egui, you can take a look at [`eframe_template`](https://github.com/emilk/eframe_template)
//! which uses [`eframe`](https://docs.rs/eframe).

View File

@@ -1460,9 +1460,9 @@ fn order_map_total_ordering() {
// Assert that `areas.compare_order()` forms a total ordering
let mut equivalence_classes = vec![0];
let mut i = 0;
for l in layers.windows(2) {
assert!(l[0].order <= l[1].order, "does not follow LayerId.order");
if areas.compare_order(l[0], l[1]) != std::cmp::Ordering::Equal {
for &[a, b] in layers.array_windows() {
assert!(a.order <= b.order, "does not follow LayerId.order");
if areas.compare_order(a, b) != std::cmp::Ordering::Equal {
i += 1;
}
equivalence_classes.push(i);

View File

@@ -134,9 +134,8 @@ where
if self.has_undo(current_state) {
self.flux = None;
if self.undos.back() == Some(current_state) {
#[expect(clippy::unwrap_used)] // we just checked that undos is not empty
self.redos.push(self.undos.pop_back().unwrap());
if let Some(state) = self.undos.pop_back_if(|state| &*state == current_state) {
self.redos.push(state);
} else {
self.redos.push(current_state.clone());
}

View File

@@ -160,16 +160,14 @@ where
while self.values.len() > self.max_len {
self.values.pop_front();
}
while self.values.len() > self.min_len {
if let Some((front_time, _)) = self.values.front() {
if *front_time < now - (self.max_age as f64) {
self.values.pop_front();
} else {
break;
}
} else {
break;
}
let oldest_allowed_time = now - self.max_age as f64;
while self.min_len < self.values.len()
&& self
.values
.pop_front_if(|&mut (front_time, _)| front_time < oldest_allowed_time)
.is_some()
{
// Keep popping while the oldest sample is too old.
}
}
}

View File

@@ -512,8 +512,7 @@ fn points_from_line(
shapes: &mut Vec<Shape>,
) {
let mut position_on_segment = 0.0;
for window in path.windows(2) {
let (start, end) = (window[0], window[1]);
for &[start, end] in path.array_windows() {
let vector = end - start;
let segment_length = vector.length();
while position_on_segment < segment_length {
@@ -545,8 +544,7 @@ fn dashes_from_line(
let mut drawing_dash = false;
let mut step = 0;
let steps = dash_lengths.len();
for window in path.windows(2) {
let (start, end) = (window[0], window[1]);
for &[start, end] in path.array_windows() {
let vector = end - start;
let segment_length = vector.length();

View File

@@ -117,7 +117,6 @@ impl SubpixelBin {
let trunc = pos as i32;
let fract = pos - trunc as f32;
#[expect(clippy::collapsible_else_if)]
if pos.is_sign_negative() {
if fract > -0.125 {
(trunc, Self::Zero)

View File

@@ -471,8 +471,7 @@ fn layout_section(
// Process each paragraph segment (split on newlines — the shaper can't handle them).
for (seg_idx, segment) in SplitOrWhole::new(section_text, job.break_on_newline).enumerate() {
if 0 < seg_idx {
out_paragraphs.push(Paragraph::from_section_index(section_index));
paragraph = out_paragraphs.last_mut().unwrap();
paragraph = out_paragraphs.push_mut(Paragraph::from_section_index(section_index));
paragraph.empty_paragraph_height = line_height;
ctx.is_first_glyph_in_section = true;
}
@@ -1864,7 +1863,7 @@ mod tests {
// Verify that Row::text() reconstructs the input text.
let row_text: String = galley.rows.iter().map(|r| r.text()).collect();
assert_eq!(row_text, text, "Row::text() mismatch for {text:?}",);
assert_eq!(row_text, text, "Row::text() mismatch for {text:?}");
// Verify cursor round-trip: end cursor index == char count.
assert_eq!(

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["tami5 <kkharji@proton.me>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Varphone Wong <varphone@qq.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -3,7 +3,7 @@ name = "custom_style"
version = "0.1.0"
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Will Brown <opensource@rebeagle.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Will Brown <opensource@rebeagle.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
# `unsafe_code` is required for `#[no_mangle]`, disable workspace lints to workaround lint error.

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Maxim Osipenko <maxim1999max@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Jan Procházka <github.com/jprochazk>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Jose Palazon <jose@palako.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[package.metadata.cargo-shear]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["René Rössler <rene@freshx.de>", "Andreas Faber <andreas.mfaber@gmail.com"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["TicClick <ya@ticclick.ch>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -5,6 +5,6 @@
# to the user in the error, instead of "error: invalid channel name '[toolchain]'".
[toolchain]
channel = "1.92.0"
channel = "1.95.0"
components = ["rustfmt", "clippy"]
targets = ["wasm32-unknown-unknown"]

View File

@@ -9,7 +9,7 @@ set -x
# Checks all tests, lints etc.
# Basically does what the CI does.
# cargo +1.92.0 install --quiet typos-cli
# cargo +1.95.0 install --quiet typos-cli
export RUSTFLAGS="-D warnings"
export RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454

View File

@@ -6,7 +6,7 @@
# -----------------------------------------------------------------------------
# Section identical to the root clippy.toml:
msrv = "1.92"
msrv = "1.95"
allow-unwrap-in-tests = true

View File

@@ -3,7 +3,7 @@ name = "test_background_logic"
version = "0.1.0"
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -3,7 +3,7 @@ name = "test_egui_extras_compilation"
version = "0.1.0"
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["Antoine Beyeler <abeyeler@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
authors = ["konkitoman"]
license = "MIT OR Apache-2.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.95"
publish = false
[lints]

View File

@@ -27,7 +27,7 @@ pub fn ask_to_run(mut cmd: Command, ask: bool, reason: &str) -> Result<(), DynEr
let is_ci = env::var_os("CI").is_some() || env::var_os("TF_BUILD").is_some();
if ask && !is_ci {
let mut buf = String::new();
print!("The script is going to run: \n\n`{cmd:?}`\n\n To {reason}.\nProceed? [Y/n] ",);
print!("The script is going to run: \n\n`{cmd:?}`\n\n To {reason}.\nProceed? [Y/n] ");
io::stdout().flush().unwrap();
io::stdin().read_line(&mut buf).unwrap();
match buf.trim().to_lowercase().as_ref() {