-
Rust]❤️심도깊게(String &str& 'static str&❤️Converts a slice of bytes)❤️to_string(),⭐️cow코딩Coding/Rust❤️Optimization❤️ 2022. 4. 17. 21:02728x90
string 만드는 방법fn main { let string_1 = String::from("Hello there"); // From trait let string_2 = "Hello there".to_string(); // Display trait let string_3: String = "Hello there".into(); // From let string_4 = "Hello there".to_owned(); // ToOwned trait. str -> String // str -> String }
String Slices
https://doc.rust-lang.org/book/ch04-03-slices.html
Function std::str::from_utf8
use std::str; // some bytes, in a vector let sparkle_heart = vec![240, 159, 146, 150]; // We know these bytes are valid, so just use `unwrap()`. let sparkle_heart = str::from_utf8(&sparkle_heart).unwrap(); assert_eq!("💖", sparkle_heart);
https://doc.rust-lang.org/std/str/fn.from_utf8.html
easy rust Kor116 - Cow again
3분 53초에 나옴
https://youtu.be/yvrRv1dUmLItype 알아보기
any을 활용하여 타입을 알수 있다
rust에서 타입type_of을 알아보는 방법ex:String의 타입 알아보기 -
https://economiceco.tistory.com/m/13349
Rust push String bytes to Vec (u8)Add the bytes from a string to a u8 vector, merging strings together in a byte Vec.
https://www.dotnetperls.com/push-u8-vec-rust
Storing UTF-8 Encoded Text with Strings
https://doc.rust-lang.org/book/ch08-02-strings.html
https://users.rust-lang.org/t/to-string-vs-to-owned-for-string-literals/1441
easy_rust
프로그래밍 언어 러스트를 배웁시다! 014 Easy Rust in Korean: String and &str
프로그래밍 언어 러스트를 배웁시다! 015 Easy Rust in Korean: String methods
const and static
https://youtu.be/E48iJShSi7s
밑에 내용이 정리 완결판!!
What is the most idiomatic way to convert a &str to a String?
Some options are:
https://users.rust-lang.org/t/what-is-the-idiomatic-way-to-convert-str-to-string/12160/5
String 자세히
공식 Rust ebook
https://doc.rust-lang.org/1.30.0/book/second-edition/ch08-02-strings.html
심도 깊게 들어감 스택 vs힙 비교하면서
https://bes.github.io/blog/rust-strings/
❤️ Stack
It's possible to store string data on the stack, one way would be to create an array of u8 and then get a &str slice pointing into that array.
This is stolen from the str documentation:
https://doc.rust-lang.org/std/str/fn.from_utf8.htmlbytes 기본 개념❤️ 무조건 암기!!
Converts a slice of bytes to a string slice.
A string slice (&str) is made of bytes (u8), and a byte slice (&[u8]) is made of bytes, so this function converts between the two.
https://doc.rust-lang.org/std/str/fn.from_utf8.htmlbytes 개념 심도 깊게
https://doc.servo.org/bytes/struct.Bytes.html
Rust] From and Into
https://doc.rust-lang.org/rust-by-example/conversion/from_into.html
https://users.rust-lang.org/t/what-is-the-idiomatic-way-to-convert-str-to-string/12160
ToSting
https://doc.rust-lang.org/nightly/std/string/trait.ToString.html
ToOwned
Uses borrowed data to replace owned data
(cow, clone에서 주로 씀)
https://doc.rust-lang.org/nightly/std/borrow/trait.ToOwned.html
⭐️⭐️⭐️⭐️⭐️⭐️👍
cow는 실전에서도 많이 쓰고
smart pointer 라 빠르니 별표 백만개 중요cow의 장점(easy_rust119,120)
1. Reference를 그대로 쓸 수 있다
2. owned타입을 가지거나 owned타입으로 바꿔서 데이타를 바꿀 수 있다3. 데이터를 바꿀 수 있다(easy_rust120)
4. 메모리를 안 쓰고 borrow하기 때문에 겁나게 빠르다 ㅎㅎ
대박!!
5. to_mut().push('!')
하면 수정할 수 없는 Reference를 수정 할 수 있다 &mut
owned타입으로 바꾼 후 데이터 수정
(easy_rust120)
⭐️Cow = Clone on write❤️
Memory allocation이 필요없다⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
Rust연습] cow_빨라서 최고borrow에서 적극 활용하자 -
https://economiceco.tistory.com/m/13340
cow 연결 blanket implementations
cow가 deref로 연결 됨 ㅎㅎ 대박
cow에서 trait implementations
Add<&'a str>
AddAssign<Cow<'a, str>>
연결해서 공부 하면 됨
(easy-rust121~)
+ Add
- Sub
+= (AddAssign)
5분56초
blanket implementations 개념
https://youtu.be/yvrRv1dUmLI
deref
117,118보면 됨
https://youtu.be/tFC8ZWvMDOE
ToOwned는 Associated type이다
https://doc.rust-lang.org/rust-by-example/generics/assoc_items/types.html
공식 문서에서 보라색 글씨는 trait라는 뜻
그래서 ToOwned는 trait
연관 타입(associated type)은 타입 자리지정자(type placeholder)를 트레이트와 연결하며 이 자리 지정자 타입을 사용해 트레이트의 메서드 시그니처를 정의할 수 있다
Rust 공식책518p참조
cow part1
https://youtu.be/3HgcxuO_f8c
Cow part2
https://youtu.be/yvrRv1dUmLI
part 3
https://youtu.be/1UrSBfjZaU0
ToOwned
예시
https://youtu.be/C48MN4d8I5Y
Rust) shared reference
❤️ unique reference- https://economiceco.tistory.com/m/14001
반응형'코딩Coding > Rust❤️Optimization❤️' 카테고리의 다른 글
Rust❤️Design Patterns -eBook (0) 2022.04.26 rust concurrency) Rayon (0) 2022.04.26 Rust] borrow가 있다면 일반 String보다 빠르다.Cow최고 (0) 2022.04.19 Rust]❤️All Algorithm implemented in Rust (0) 2022.04.18 러스트Rust] Compile컴파일_시간은 늘어나지만 실행 속도 올리는 최적화Optimization (0) 2022.04.08 Reliable optimization for idiomatic Rust- Ferrous System Gmbh(cargo miri) (0) 2022.04.04 Rust]cargo nextest run(일반 test보다 60프로 이상 더 빠름) (0) 2022.03.23 rust컴파일 속도 더 빠르게 만들기zld(# `brew install michaeleisel/zld/zld` (0) 2022.03.17