Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider allowing limited type inference in static declarations #296

Closed
rust-highfive opened this Issue Sep 24, 2014 · 1 comment

Comments

Projects
None yet
3 participants
@rust-highfive
Copy link

rust-highfive commented Sep 24, 2014

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.

@Centril

This comment has been minimized.

Copy link
Contributor

Centril commented Oct 7, 2018

Closing in favor of #1349.

@Centril Centril closed this Oct 7, 2018

wycats pushed a commit to wycats/rust-rfcs that referenced this issue Mar 5, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.