Rust]❤️심도깊게(String &str& 'static str&❤️Converts a slice of bytes)❤️to_string(),⭐️cow
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/yvrRv1dUmLI
type 알아보기
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.html
bytes 기본 개념❤️ 무조건 암기!!
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.html
bytes 개념 심도 깊게
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