Rust - новое значение переменной в u64 не меняется, в чем ошибка?

Возможно ошибка глупая, но не могу понять суть ее. Прошу помощи. Почему новое значение, полученное внутри условного оператора не применяется (let oldfiles:u64 = 6666;), а используется старое (let oldfiles:u64 = 5555;) ? Условие if true выполняется.

   let oldfiles:u64 = 5555;  
          
   if true {
       let oldfiles:u64 = 6666;
       dbg!(oldfiles); // oldfiles = 6666
   }

   //почему здесь значение oldfiles не изменилось и равно 5555 ?
   dbg!(oldfiles); // oldfiles = 5555

Ответы (1 шт):

Автор решения: Pavel Mayorov

Ключевое слово let объявляет новую переменную. То есть вместо присваивания значения старой переменной вы завели новую, которая не видна за пределами того блока, где была объявлена.

Если вы собираетесь изменять значение переменной - надо объявить её как мутабельную (mut), и не писать let во второй раз:

    let mut oldfiles:u64 = 5555; 

    if true {
      oldfiles = 6666;
    }
    
    dbg!(oldfiles); // oldfiles = 6666
→ Ссылка