Gliese1337 Rust dilinden önce öğrendiğim haliyle, x + 1 ifadesini expression, işlem yapan ve ;ile bitenler statements olarak biliyordum. Yani; statements bir eylemi veya komutu temsil eder şeklinde düşünüyorum. Örneğin; kişisel görüşüm, print ile yazdırmak veya = ile atama yapmak gibi. Expression ise değer döndüren her ifade için söylenebilir. Kitapta eskiden biraz incelemiştim, siz söyleyince tekrar baktım.
Expressions evaluate to a value and make up most of the rest of the code that you’ll write in Rust. Consider a math operation, such as 5 + 6, which is an expression that evaluates to the value 11. Expressions can be part of statements: in Listing 3-1, the 6 in the statement let y = 6; is an expression that evaluates to the value 6. Calling a function is an expression. Calling a macro is an expression. A new scope block created with curly brackets is an expression, for example:
Şeklinde yazmışlar. Belki burada fonksiyon çağırmak kısmını, geri değer döndüren fonksiyon çağırmak diye detaylandırsalar, daha iyi olacaktı. Kafa karışıklığına sebep olabilir. Kod olarak:
vec![1,2,3] // expression -> Vec<i32> döndürür
fn return_five() -> i32 { 5 } // expression -> i32 türünde 5 sayısını döndürür
let new_vec = vec![1,2,3]; // statement -> Herhangi bir değer döndürmez, atama yapar.
let take_five = return_five(); // statement -> Herhangi bir değer döndürmez, atama yapar.
Yine makro çağırmak da expression olarak değinmişler. Makronun değer döndüren veya println! gibi yazdırmasına göre değişeceğini düşünüyorum. Tabi; bu benim kişisel fikrim. Belki farklı görüşleri olan arkadaşlar yazabilir.
@Gliese1337 Cevabı bulduğunuzu düşündüğünüz konulara çözüldü etiketini eklemenizi rica edecektim.