Anonymous
в общем, s не так долго живет, как хотелось бы
stalkerg
к этому моменту другой поток мог бы его убить
Loyd
Другой поток к mut и так доступ не получит
Loyd
Loyd
Твой split переживает s, потому и лажа. А вот почему переживает — нужно больше кода
Anonymous
pub fn read_from_file(&self) -> Vec<&str>{
let path = Path::new(&self.path);
let display = path.display();
let mut file = match File::open(&path) {
Err(why) => panic!("couldn't open {}: {}", display, why.description()),
Ok(file) => file,
};
let mut s = String::new();
let split = s.split("\n");
let vec: Vec<&str> = split.collect();
vec
}
Loyd
Ну вот. split возвращает итератор Split, который Iterator<&str>
Loyd
То есть по части строки из твоего s
Loyd
Сделай split.cloned().collect()
Anonymous
точно cloned?)
Loyd
Не, не хватит его, там же str. Тогда нужно split.map(ToString::to_string).collect
Loyd
И это будет Vec<String>
Anonymous
еее
Anonymous
спасибо)
Anonymous
теперь пойду читать что же произошло
Oleg
теперь пойду читать что же произошло
Я, конечно, скалист, и не бумбум в расте, но твоя функция возвращает вектор ссылок на строки, в который ты хочешь завернуть куски локальной переменной, которая, в свою очередь умрёт, в лучшем случае, как только ты выйдешь из функции
Michael
Anonymous
4итала с утра ето сообщение олега и ни4его не поняла
Anonymous
а щас все норми4
Судзумия
Наши поздравления :)
Anonymous
спасибо!!!!!
Маjко
Неза4то
Anonymous
Anonymous
ребят, а вот как в rust обрабатывать исключения?
Kirill
Судзумия
В Rust book есть глава об обработке ошибок
Anonymous
вот есть функция, она крашится, как вот мне отловить это и обработать?
Anonymous
о
Anonymous
пошел читать
iDeBugger
Полезно её в общем-то целиком прочитать
Anonymous
Sherzod
есть паника
Kirill
я читаю)
https://doc.rust-lang.org/book/second-edition/ch09-00-error-handling.html
Kirill
Кстати вторая редакция книжки заметно более человечно написана, рекомендую
Kirill
Хоть и бета
Kirill
В частности, теперь там есть часть "So how do you decide when you should panic! and when you should return Result?"
Судзумия
Паники лучше не стоит обрабатывать :) Это исключительная ситуация, которую нужно обрабатывать только на совсем низком уровне
Anonymous
да у меня просто в функцию передается строка, которая должна разобраться в JSON, но, иногда туда может прилететь и невозможная к разбору строка и вот в таком случае я бы хотел позвращать свой JSON
Anonymous
use json;
pub struct Coder;
impl Coder {
pub fn decode_to_str(query: Vec<u8>) -> String {
String::from_utf8(query).unwrap().to_string()
}
pub fn to_json(query: &str) -> json::JsonValue {
json::parse(query).unwrap()
}
pub fn to_json2(query: Vec<u8>) -> json::JsonValue {
let tmp = Coder::decode_to_str(query);
let response = Coder::to_json(&tmp);
response
}
}
вот как то обернуть let response во что-то бы
Kirill
Sherzod
Код в тг это изврат)
Anonymous
в to_json
Kirill
Ну и вообще чем меньше анврапов тем лучше и надёжнее.
պլհկ
պլհկ
❤️
Loo
Уан лав
iDeBugger
Anonymous
ет вы с темплейтами крестов слу4айно набедокурили шоле)
Cuno
Функцию порефактори, получше выглядеть будет. Многовато комбинаторов, конечно.
Cuno
Проблема, кстати, известная (я не про размер ошибки).
Cuno
BoxFuture требует Send, но hyper фьючи его не имплементят.
Anonymous
дзен
Oleg
let client_senders: Arc<Mutex<Vec<mpsc::Sender<String>>>> = Arc::new(Mutex::new(vec![]));
IS RUST A HOLY GRAIL THAT WILL ALLOW US WRITE HTML ON BOTH FRONTEND AND BACKEND???
Cuno
фу
Cuno
говнокод
Cuno
блеать
Cuno
let client_senders = Default::default()
Oleg
Это я про ошибку выше
պլհկ
выкинул BoxFuture, Send мне не нужен тут
分解物質
Судзумия
🎲
Все переменные попадающие в тред должны быть с временем жизни 'static?
Filipp
можешь скоуп-треды заюзать
🎲
а можно ссылку?
Filipp
https://doc.rust-lang.org/1.1.0/std/thread/fn.scoped.html
Filipp
или вот это
https://aturon.github.io/crossbeam-doc/crossbeam/struct.Scope.html
Filipp
я сам не юзал, только читал про такие
պլհկ
кроссбим норм
Kirill
Kirill
Но вообще я не понимаю, откуда взялась идея про 'static?
Любую Send-переменную можно двигать из потока в поток, Send об этом и говорит...
Kirill
А Sync говорит, что безопасно делить содержимое между многими потоками
Kirill
Ну и дальше по https://doc.rust-lang.org/book/second-edition/ch16-04-extensible-concurrency-sync-and-send.html
Маjко
Kirill
🎲
Мне наверное стоит код показать, чтоб прояснить ситуацию