LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

Ну так что, реальный тип переменной b можно вывести?

Да.

Продемонстрируй.

Но ведь тебе это уже продемонстрировали. ЧСВ мешает по ссылкам ходить? Окей, вот:

#[inline(never)]
fn foo() -> impl Debug {
    1u32
}

Вот сгенерированный MIR:

fn foo() -> u32{
    let mut _0: u32;                     // return place

    bb0: {                              
        _0 = const 1u32;                 // bb0[0]: scope 0 at src/main.rs:5:5: 5:9
                                         // ty::Const
                                         // + ty: u32
                                         // + val: Value(ByVal(Bytes(1)))
                                         // mir::Constant
                                         // + span: src/main.rs:5:5: 5:9
                                         // + ty: u32
                                         // + literal: const 1u32
        return;                          // bb0[1]: scope 0 at src/main.rs:6:2: 6:2
    }
}

Видишь возвращаемый тип foo? А теперь иди проспись.

Исходная версия tailgunner, :

Ну так что, реальный тип переменной b можно вывести?

Да.

Продемонстрируй.

Но ведь тебе это уже продемонстрировали. ЧСВ мешает по ссылкам ходить? Окей, вот:

#[inline(never)]
fn foo() -> impl Debug {
    1u32
}

Вот сгенерированный MIR

fn foo() -> u32{
    let mut _0: u32;                     // return place

    bb0: {                              
        _0 = const 1u32;                 // bb0[0]: scope 0 at src/main.rs:5:5: 5:9
                                         // ty::Const
                                         // + ty: u32
                                         // + val: Value(ByVal(Bytes(1)))
                                         // mir::Constant
                                         // + span: src/main.rs:5:5: 5:9
                                         // + ty: u32
                                         // + literal: const 1u32
        return;                          // bb0[1]: scope 0 at src/main.rs:6:2: 6:2
    }
}

Видишь возвращаемый тип foo? А теперь иди проспись.