Skip to content

function definitions have variance #11

Open
@lcnr

Description

@lcnr
// 'a  is covariant, 'b is contravariant
fn foo<'a, 'b: 'a>(x: &'b ()) -> &'a () { x }

fn bar<'a, 'b: 'a, 'c: 'b>() {
    let f = if true {
        foo::<'a, 'b>
    } else {
        foo::<'b, 'c>
    };
    
    assert!(size_of_val(&f) == 0)
}

fn main() {
    bar();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions