From 8a0fddf1e46509e3dc4dafc4196f6c261fb084e1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 3 Nov 2025 09:10:40 +0100 Subject: [PATCH 1/2] :arrow_up: Update rust to 1.91 --- docker/devenv/Dockerfile | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 2b43f31e93..b23a481817 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -149,18 +149,24 @@ FROM base AS setup-rust ENV PATH=/opt/cargo/bin:$PATH \ RUSTUP_HOME=/opt/rustup \ CARGO_HOME=/opt/cargo \ - RUSTUP_VERSION=1.27.1 \ - RUST_VERSION=1.85.0 \ + RUSTUP_VERSION=1.28.2 \ + RUST_VERSION=1.91.0 \ EMSCRIPTEN_VERSION=4.0.6 WORKDIR /opt RUN set -eux; \ # Same steps as in Rust official Docker image https://github.com/rust-lang/docker-rust/blob/9f287282d513a84cb7c7f38f197838f15d37b6a9/1.81.0/bookworm/Dockerfile - dpkgArch="$(dpkg --print-architecture)"; \ - case "${dpkgArch##*-}" in \ - amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d' ;; \ - arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='1cffbf51e63e634c746f741de50649bbbcbd9dbe1de363c9ecef64e278dba2b2' ;; \ + arch="$(dpkg --print-architecture)"; \ + case "$arch" in \ + 'amd64') \ + rustArch='x86_64-unknown-linux-gnu'; \ + rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c'; \ + ;; \ + 'arm64') \ + rustArch='aarch64-unknown-linux-gnu'; \ + rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c'; \ + ;; \ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ wget "https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/${rustArch}/rustup-init"; \ From 4ab6ecec219f5c3dacac7128c8b4ae8bb6b15f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bel=C3=A9n=20Albeza?= Date: Mon, 3 Nov 2025 10:43:35 +0100 Subject: [PATCH 2/2] :wrench: Fix rust linter errors --- render-wasm/src/math/bools.rs | 2 +- render-wasm/src/render/text.rs | 4 ++-- render-wasm/src/shapes.rs | 2 +- render-wasm/src/shapes/bools.rs | 20 +++----------------- render-wasm/src/shapes/shadows.rs | 9 ++------- render-wasm/src/wasm/paths.rs | 2 +- 6 files changed, 10 insertions(+), 29 deletions(-) diff --git a/render-wasm/src/math/bools.rs b/render-wasm/src/math/bools.rs index 72f932fb64..4c2f793172 100644 --- a/render-wasm/src/math/bools.rs +++ b/render-wasm/src/math/bools.rs @@ -300,7 +300,7 @@ impl Ord for BezierStart { type BM<'a> = BTreeMap>; -fn init_bm(beziers: &[(BezierSource, Bezier)]) -> BM { +fn init_bm(beziers: &[(BezierSource, Bezier)]) -> BM<'_> { let mut bm = BM::default(); for entry @ (source, bezier) in beziers.iter() { let value = *entry; diff --git a/render-wasm/src/render/text.rs b/render-wasm/src/render/text.rs index 5828a55643..da6974eaa3 100644 --- a/render-wasm/src/render/text.rs +++ b/render-wasm/src/render/text.rs @@ -87,8 +87,8 @@ fn get_text_stroke_paints( let shader = text_paint.shader(); let mut is_opaque = true; - if shader.is_some() { - is_opaque = shader.unwrap().is_opaque(); + if let Some(shader) = shader { + is_opaque = shader.is_opaque(); } if is_opaque && count_inner_strokes == 1 { diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index c834d778f6..6c1b2d4425 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -573,7 +573,7 @@ impl Shape { (added, removed) } - pub fn fills(&self) -> std::slice::Iter { + pub fn fills(&self) -> std::slice::Iter<'_, Fill> { self.fills.iter() } diff --git a/render-wasm/src/shapes/bools.rs b/render-wasm/src/shapes/bools.rs index 9fa6610887..644c4108d2 100644 --- a/render-wasm/src/shapes/bools.rs +++ b/render-wasm/src/shapes/bools.rs @@ -1,30 +1,16 @@ use super::Path; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Default, Clone, PartialEq)] pub struct Bool { pub bool_type: BoolType, pub path: Path, } -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub enum BoolType { + #[default] Union, Difference, Intersection, Exclusion, } - -impl Default for Bool { - fn default() -> Self { - Bool { - bool_type: BoolType::Union, - path: Path::default(), - } - } -} - -impl Default for BoolType { - fn default() -> Self { - Self::Union - } -} diff --git a/render-wasm/src/shapes/shadows.rs b/render-wasm/src/shapes/shadows.rs index 28d940eddd..71e09a493c 100644 --- a/render-wasm/src/shapes/shadows.rs +++ b/render-wasm/src/shapes/shadows.rs @@ -3,18 +3,13 @@ use skia_safe::{self as skia, image_filters, ImageFilter, Paint}; use super::Color; use crate::render::filters::compose_filters; -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub enum ShadowStyle { + #[default] Drop, Inner, } -impl Default for ShadowStyle { - fn default() -> Self { - Self::Drop - } -} - #[derive(Debug, Clone, Copy, PartialEq)] pub struct Shadow { pub color: Color, diff --git a/render-wasm/src/wasm/paths.rs b/render-wasm/src/wasm/paths.rs index db69f1b21a..744ee361f6 100644 --- a/render-wasm/src/wasm/paths.rs +++ b/render-wasm/src/wasm/paths.rs @@ -180,7 +180,7 @@ pub extern "C" fn set_shape_path_buffer() { let buffer = get_path_upload_buffer(); let mut buffer = buffer.lock().unwrap(); let chunk_size = size_of::(); - if buffer.len() % chunk_size != 0 { + if !buffer.len().is_multiple_of(chunk_size) { // FIXME println!("Warning: buffer length is not a multiple of chunk size!"); }