json
-
Rust: serde json Enum 공부컴퓨터/Rust 2021. 7. 28. 19:20
serde Overview · Serde Serde Serde is a framework for serializing and deserializing Rust data structures efficiently and generically. serde.rs 할 것 지난 글에서 trait를 이용해서 Serialize를 하였는데 (dyn erased_serde::Serialize) 여기서 Deserialize까지 하고 싶었더니 복잡하게 되었다. polymorphism을 파이썬처럼 생각하고 짰더니 어려워진 것 같다. Rust에서는 enum이 하스켈처럼 다양하게 사용될 수 있는 것 같다. 자바에서 enum과 정말 다르다. 간단 예제 // Create an `enum` to classify a web event. ..
-
Rust: Javascript POST json 데이터 consume컴퓨터/Rust 2021. 7. 25. 22:01
할것 Rust Rocket 웹 프레임워크로 서버를 만들고 (backend) 홈페이지에서 (frontend) 아래에서 메시지를 입력하면 만들어둔 Rust 서버로 데이터를 보낼 것이다. 여기서 메시지는 json string을 보내고 이 데이터를 javascript로 POST 한다. Rust 카카오 챗봇은 여러가지 메시지를 한번에 담아서 보낼 수 있는데 (template.outputs) 각 type을 체크해서 vector에 string으로 담아 rust로 { "type": "carousel", "json": data } JSON 형식으로 반환할 것이다. #[post("/json", format = "json", data = "")] pub fn json_test(kakao: String) -> Result {..
-
Rust: String 한글 len() (UTF-8)컴퓨터/Rust 2021. 7. 20. 12:39
할 것 Rust String은 UTF-8 기준으로 len()을 부르면 바이트 기준으로 센다. Go언어의 utf8.RuneCountInString처럼 "안녕하세요"를 length 5로 세고 싶을 땐 unicode-segment crate를 사용하면 편해진다. (또는 chars().count()도 있지만 이 예제에선 String 길이가 5 이상이면 자르고 ... 을 추가한다.) 예제 코드 use unicode_segmentation::UnicodeSegmentation; let mut some_string = "가나다라마바사아"; if some_string.graphemes(true).count() > 5 { // 자소 기준 길이 5 넘음 some_string = UnicodeSegmentation::gra..
-
Rust: serde De/Serialize traits into JSON컴퓨터/Rust 2021. 7. 19. 16:55
할 것 A 버튼이 있고, B 버튼이 있을 때 이 두 버튼은 Base 란 trait를 implement 한다. (자바로 보면 class A implements Base) 이 trait를 implement한 struct들을 Vector에 담아서 이 결과를 json으로 바꾸고 싶은데 하지만 기본적으로는 trait는 불가능하다. 5시간 정도 헤매었다. erased_serde crate를 사용하면 편해진다. 예제 코드 공식 문서에 예제가 없어 카카오톡 챗봇 반응에서 버튼 JSON을 만들 때를 코딩했다. 설명 ButtonJSON이란 struct가 있다. 이 구조체는 벡터 형식으로 trait를 implement한 모든 구조체들의 모음이다. Button이란 trait를 보면 new, set_label, set_msg ..