различие по возвращаемому значению функции
От: sergii.p  
Дата: 03.11.22 15:52
Оценка: 9 (1)
не совсем понимаю логику языка

почему такой код возможен

fn foo<T>() -> T 
    where T: std::default::Default {
    T::default()
}

fn main() {
    let x: i8 = foo();
    let x: i32 = foo();
}


а такой — нет

fn foo() -> i8 { 0 }
fn foo() -> i32 { 0 } 

fn main() {
    let x: i8 = foo();
    let x: i32 = foo();
}
Re: различие по возвращаемому значению функции
От: FR  
Дата: 03.11.22 16:06
Оценка: 9 (1) +2
Здравствуйте, sergii.p, Вы писали:

SP>не совсем понимаю логику языка


SP>почему такой код возможен


Так обобщенная же функция + вывод типов по использованию.

SP>а такой — нет


Перегрузки функций как в C++ в расте нет, хотя твой второй пример и в С++ не заработает, по возвращаемому значению же нет и в С++ перегрузки.
Re[2]: различие по возвращаемому значению функции
От: sergii.p  
Дата: 04.11.22 08:35
Оценка:
Здравствуйте, FR, Вы писали:

то у меня временное помутнение рассудка. Почему-то показалось, что первый пример в С++ не компилируется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.