2021 시작

Rust 슬라이스

2021. 5. 6. 09:31
/*
//enumerate사용법
fn main() {
    let s = String::from("hello");

    return_char(&s);
}

fn return_char(s: &String) -> usize
{
    let bytes = s.as_bytes();

    enumerate()함수는 튜플을 반환한다.
    for (i,&item) in bytes.iter().enumerate(){
        println!("i : {}, item : {}",i,item);
        if item == b' '{
            return i;
        }
    }

    s.len()
    
} */

/*
//문자열 슬라이스
fn main()
{
    let s = String::from("hello world");

    let hello = &s[0..5];
    let world = &s[6..11];
}

*/

/*
//수정된 first_word함수
fn main()
{
    let s1 = String::from("hello world");
    
    let words = first_word(&s1);

    
    //s1.clear(); //<- 에러남 이미 다른이에게 빌려줬음

    println!("words : {}",words);


}

fn first_word(s1 : &String) -> &str
{
    for (i,&item) in s1.as_bytes().iter().enumerate(){
        if item == b' '{
            return &s1[0..i]
        }
    };

    &s1[0..]
}*/

/*
//리터럴 문자열은 이미 슬라이스가 되어있다.
fn main()
{
    let my_string = String::from("hello world");

    println!("my_string : {}",my_string);
    //first_word 함수에 String 타입으로 부터 생성한 문자열 슬라이스를 전달한다.
    let word = first_word(&my_string[..]);

    println!("word1 : {}",word);
    let my_string_literal = "hello world";
    println!("my_String_literal : {}",my_string_literal);
    //first_word함수에 문자열 리터럴의 슬라이스를 전달한다.
    let word = first_word(&my_string_literal[..]);
    println!("word2 : {}",word);
    //문자열 리터럴은 이미 문자열 슬라이스이기 때문에
    //아래의 코드는 슬라이스 문법 없이도 정상적으로 동작한다.
    let word = first_word(my_string_literal);
    println!("word3 : {}",word);
}

fn first_word(s:&str)->&str
{
    &s[..]
}
*/

/*
//다른 타입의 슬라이스
fn main()
{
    let array = [1,2,3,4,5,6];

    let integer_slice = &array[..4];
    
    for (i,&item) in integer_slice.iter().enumerate(){

        println!("integer_slice[{}] = {}",i,item);
    }

    
}
*/

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading