Объявление (Declaration) - вводит имя переменной в область видимости.
let x: u8;
fn f(x: u8);
Связывание (Binding) — связывает имя с чем-то (значением, шаблоном, параметром).
let x: u8 = 123; // можно трактовать по разному: связывание, инициализация, определение
fn f(x: u8); // x привязывается к значению при вызове, как я понял
Инициализация (Initialization) - впервые присваивает значение переменной.
let x: u8 = 123;
let x: u8;
x = 123;
Определение (Definition) - объявление и инициализация.
let x: u8 = 123;
fn f(x: u8) { /* Something */ };
Например:
let x: u8; // Объявление
x = 123; // Связывание и инициализация
let x = 123; // Связывание и определение
fn f(x: u8) {} // Связывание и определение
fn f() {} // Определение
Я не могу найти однозначных определений каждого из терминов, отсюда много вопросов.
Определение переменной и определение функции разные вещи, функция не может быть инициализирована, тогда почему это называют определением, если определение это "объявление и инициализация"?
Вот похожие вопросы, которые дают некоторые ответы для cpp с некоторой исчерпывающий информацией из стандарта:
https://stackoverflow.com/questions/23345554/what-...
https://stackoverflow.com/questions/1410563/what-i...
Какая-то чушь получается, люди называют вещи как им хочется и путают других.
- Это хорошо иллюстрируют функции, технически параметрами называются элементы в скобках при определении
fn f(x: u8)
, а аргументами элементы в скобках при вызове
f(255);
, однако люди используют их взаимозаменяемо.