fn type_for_fn(db: &dyn HirDatabase, def: FunctionId) -> Binders<Ty> {
    let generics = generics(db.upcast(), def.into());
    let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST);
    Binders::new(substs.len(), Ty::apply(TypeCtor::FnDef(def.into()), substs))
}
/// Build the declared type of a function. This should not need to look at the
/// function body.
Build the declared type of a function. This should not need to look at the
function body.
Build the declared type of a function . This should not need to look at the function body .
fn type_for_fn(db: &dyn HirDatabase, def: FunctionId) -> Binders<Ty> {
    let generics = generics(db.upcast(), def.into());
    let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST);
    Binders::new(substs.len(), Ty::apply(TypeCtor::FnDef(def.into()), substs))
}
fn type_for_fn ( db : & dyn HirDatabase , def : FunctionId ) -> Binders < Ty > { let generics = generics ( db . upcast ( ) , def . into ( ) ) ; let substs = Substs :: bound_vars ( & generics , DebruijnIndex :: INNERMOST ) ; Binders :: new ( substs . len ( ) , Ty :: apply ( TypeCtor :: FnDef ( def . into ( ) ) , substs ) ) }
Build the declared type of a function.
Build the declared type of a function .
db
&dyn HirDatabase
def
FunctionId