Skip to content

Type inference analysis confused by use in scope #3997

@CAD97

Description

@CAD97

(Sorry for the not-super-minimized rerpo, I ran into this while following the gfx-hal intro.)

Cargo.toml

[package]
name = "gfx-hal-tutorials"
version = "0.0.0"
edition = "2018"
publish = false

[dependencies]
winit = "0.22.0"

main.rs (use at root scope)

use winit::dpi::{LogicalSize, PhysicalSize};
const WINDOW_SIZE: [u32; 2] = [512, 512];

fn main() {
    let event_loop = winit::event_loop::EventLoop::new();

    let (logical_window_size, physical_window_size) = {
        let dpi = event_loop.primary_monitor().scale_factor();
        let logical: LogicalSize<u32> = WINDOW_SIZE.into();
        let physical: PhysicalSize<u32> = logical.to_physical(dpi);

        (logical, physical)
    };
}

image

main.rs (scoped use)

const WINDOW_SIZE: [u32; 2] = [512, 512];

fn main() {
    use winit::dpi::{LogicalSize, PhysicalSize};
    let event_loop = winit::event_loop::EventLoop::new();

    let (logical_window_size, physical_window_size) = {
        let dpi = event_loop.primary_monitor().scale_factor();
        let logical: LogicalSize<u32> = WINDOW_SIZE.into();
        let physical: PhysicalSize<u32> = logical.to_physical(dpi);

        (logical, physical)
    };
}

image

This second form infers the wrong type for logical_window_size, and no type for physical_window_size.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions