⛓️
Blockchain
  • Start!
  • Go_lang
    • Tutorial
    • 1. Banking
    • 2. Dictionary
    • 3. URL Checker
    • Useful Methods - Slice
    • Useful data structure
  • RUST
    • Start
    • Basic
    • Basic Programming Concepts
      • Variables and Mutability
  • Bitcoin
    • Start
    • Introduction
    • Transactions
  • GO-BITCOIN
    • Start
    • 1. Blocks & Blockchain
    • 2. Proof of work
    • 3. BadgerDB
    • 4. Transactions
    • 5. Wallet
    • 6. Adding Digital Signatures
  • COSMOS
    • 코스모스 SDK
    • 코스모스 SDK 실습 - nameservice
    • 코스모스 허브는 어떻게 사용하는가?
    • 코스모스 허브, 금융의 역사를 다시 쓰다
    • Tendermint
      • ABCI
      • Messages
  • Cosmos Tutorial
    • Tutorials
    • 1. Blog
    • Nameservice
    • [Starport] Escrow Account: Scavenge
    • [Starport] Inter-Blockchain Communication: Basics
    • Create an IBC Interchain Exchange module
      • Introduction
      • App Design
      • Initialize the Blockchain
      • Create the Order Book
  • Ethereum
    • Start
    • Gas
    • Oracle Problem
  • consensus
    • DPoS
    • PBFT
    • Network model
  • cryptosystem
    • 대칭키 암호
    • IPFS
  • Social token
    • Rally
    • DeSo
      • Bitclout
      • Deso: The Decentralized Social Network
      • Setting Up Your Dev Environment
      • Deso Code Walkthrough
      • Web3 Will Not Be Built on Smart Contracts
  • 재윤TV
    • Start
    • 유니스왑에 대해서 아라보자
      • Concept
      • V2 백서 분석
      • V2 코드 분석
Powered by GitBook
On this page
  • 변수
  • let
  • const
  • Shadowing

Was this helpful?

  1. RUST
  2. Basic Programming Concepts

Variables and Mutability

변수

let

기본적으로 Rust의 모든 변수는 불변하다. 하지만 mut 키워드를 붙임으로써 가변한 변수를 만들 수 있다.

아래 코드에서 mut를 붙이지 않으면 에러가 발생한다.

fn main() {
    let mut x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}

대규모 데이터 구조체를 다루는 경우 가변한 인스턴스를 사용하는 것이 새로 인스턴스를 할당하고 반환하는 것보다 빠를 수 있다. 데이터 규모가 작을수록 새 인스턴스를 생성하고 함수적 프로그래밍 스타일로 작성하는 것이 더 합리적이고, 그렇기에 약간의 성능 하락을 통해 가독성을 확보할 수 있다면 더 가치있는 선택이다.

const

상수를 사용할 때는 const 키워드를 사용한다.

값의 유형을 선언해야 한다.

상수는 불변성 그 자체이므로 mut이 허용되지 않는다.

Shadowing

앞서 선언된 변수와 같은 이름의 변수를 새로 선언함으로써 앞의 변수를 지우고 새로운 값을 가진 변수를 선언할 수 있다. Rustacean들은 이를 첫 변수가 두번째에 의해 shadowed 됐다고 표현한다.

fn main() {
    let x = 5;
    let x = x + 1;
    let x = x * 2;

    println!("The value of x is: {}", x);
}

mut으로 선언하는 것과의 차이

shadow를 사용하게 되면 몇 번 값을 변경할 수는 있지만 결국 불변한 변수를 얻을 수 있다.

값의 유형을 변경하면서도 동일 이름을 사용할 수 있다.

ex)
let spaces = "   ";
let spaces = spaces.len();

첫 spaces는 문자열이고 두번째는 숫자이다. 이렇게 값의 유형이 변경되면서도 실제로 저장하고자 했던 공백의 개수를 표현할 수 있다. (space_str, space_num 과 같이 대체된 이름을 사용할 필요가 없다.)

let mut spaces = "   ";
spaces = spaces.len();

위 코드와 같은 형태로 mut을 사용했다면 타입의 변화로 에러가 발생한다.

PreviousBasic Programming ConceptsNextStart

Last updated 3 years ago

Was this helpful?