Skip to content

Consider allowing limited type inference in static declarations #296

@rust-highfive

Description

@rust-highfive

Issue by sfackler
Thursday Sep 19, 2013 at 23:23 GMT

For earlier discussion, see rust-lang/rust#9346

This issue was labelled with: A-typesystem, B-RFC in the Rust repository


Currently, statics must have a type annotation as doing global type inference to resolve the type is a bad idea. However, this leads to some annoying duplication, especially when defining a static struct instance. For example, from extra::base64:

pub static STANDARD: Config =
    Config {char_set: Standard, pad: true, line_length: None};

There's no ambiguity in the type of the RHS, but the LHS must repeat the type anyways.

Would it be possible/reasonable to infer the type of statics from the RHS of the assignment where possible? Things like this would be work:

pub static STANDARD =
    Config {char_set: Standard, pad: true, line_length: None};

pub static HELLO = "hello, world!";

pub static HELLO_BYTES = bytes!("hello, world!");

pub static BAR = 18u8;

but

pub static BAZ = 10;

would not since the type isn't specified (or maybe it would resolve to int?). Untyped integer literals and generic types containing them are actually the only things I can think of that would require a type annotation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-langRelevant to the language team, which will review and decide on the RFC.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions