The tracking issue for this feature is: #86555

This implements RFC2528. When turned on, you can create instances of the same struct that have different generic type or lifetime parameters.

#![allow(unused_variables, dead_code)]

fn main () {
    struct Foo<T, U> {
        field1: T,
        field2: U,

    let base: Foo<String, i32> = Foo {
        field1: String::from("hello"),
        field2: 1234,
    let updated: Foo<f64, i32> = Foo {
        field1: 3.14,