Size: a a a

2020 December 07

M

MrSmith in Rust Beginners
Jøhn Đøꝩsøn
if let ... else panic!? Имплементить Try для своего типа и использовать ??
А да еше лучше, заверну в Try
источник

NL

Nick Linker in Rust Beginners
Декабрьский Rust-митап.

Вторник, 15 декабря 2020, 19:00..21:00 GMT+3 (временная зона Москвы)

Доклад: Rust: просто о сложном. (Михаил Грачев, Team Lead Evrone).
Так уж сложилось, что Rust имеет репутацию сложного языка программирования, понятного только узкому кругу программистов. Но это не так и в своём докладе я бы хотел рассказать вам о Rust просто и без лишней сложности. Попутно сравнивая его с другими языками программирования. Доклад ориентирован на программистов, которые присматриваются к Rust.

Запись будет доступна по ссылке: https://youtu.be/yCrc5BwZrtw однако в онлайне будет возможность задать каверзные вопросы и прото поделиться своим опытом.

О возможных изменениях вы можете узнать в чате митапа http://t.me/ruRust_msk

Митап проводится при поддержке: - online-школы английского языка Skyeng и онлайн-школы Skysmart.
Информационный партнëр:
https://itmeeting.ru/ - телеграм-канал с анонсами бесплатных мероприятий по разработке.
источник

🦄

🦄 in Rust Beginners
MrSmith
Есть в расте короткий макрос для получения конкретного типа tagged? что то вроде get!(Type) который в случае если что то пошло не так паникует?
источник

AB

Andrew Borzilo in Rust Beginners
Max Kot
На на инты как и на мапу потребуется блокировка?
Зависит от задачи. Если нельзя допустить, чтобы изменённый int кто-то прочитал до изменения мапы, то есть нужна атомарность всего апдейта структуры (пример - в инте хранится size мапы), то нужен mutex на всю структуру. Если значения инта и мапы независимые, то можно атомики.
источник

AB

Andrew Borzilo in Rust Beginners
Извините за некропостинг :) телега наколола с  непрочитанными сообщениями
источник

M

MrSmith in Rust Beginners
Nick Linker
Декабрьский Rust-митап.

Вторник, 15 декабря 2020, 19:00..21:00 GMT+3 (временная зона Москвы)

Доклад: Rust: просто о сложном. (Михаил Грачев, Team Lead Evrone).
Так уж сложилось, что Rust имеет репутацию сложного языка программирования, понятного только узкому кругу программистов. Но это не так и в своём докладе я бы хотел рассказать вам о Rust просто и без лишней сложности. Попутно сравнивая его с другими языками программирования. Доклад ориентирован на программистов, которые присматриваются к Rust.

Запись будет доступна по ссылке: https://youtu.be/yCrc5BwZrtw однако в онлайне будет возможность задать каверзные вопросы и прото поделиться своим опытом.

О возможных изменениях вы можете узнать в чате митапа http://t.me/ruRust_msk

Митап проводится при поддержке: - online-школы английского языка Skyeng и онлайн-школы Skysmart.
Информационный партнëр:
https://itmeeting.ru/ - телеграм-канал с анонсами бесплатных мероприятий по разработке.
начинать доклад предлагаю с введения в поисковую строку запроса rust job
источник

NL

Nick Linker in Rust Beginners
MrSmith
начинать доклад предлагаю с введения в поисковую строку запроса rust job
Я бы не начинал оффтоп здесь.
источник

/

/bin/cat in Rust Beginners
можно ли добавить поле к структуре в serde? Нужно посчитать сигнатуру и отсортировать запрос
источник

R

Roman Q in Rust Beginners
делаю веб приложение на actix:
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
  ...

   HttpServer::new(move || App::new()
       .configure(configure_service)
       .data(create_schema_with_context())
   )
       .bind("0.0.0.0:8001")?
       .run()
       .await
}


в дата кладется некоторый объект Schema (из 3 rd party library), в который в свою очередь передается Arc<Mutex<i32>>:
pub fn create_schema_with_context() ...
   let kafka_consumer_counter = Arc::new(Mutex::new(0));

   Schema::build(Query, Mutation, Subscription)
       .data(kafka_consumer_counter)
       .finish()
}


далее по запросу с клиента создается консьюмер которому надо передать текущий счетчик:
        let kafka_consumer_counter = ctx.data::<Arc<Mutex<i32>>>().expect("Can't get Kafka consumer counter");
       let mut counter = kafka_consumer_counter.lock().expect("Can't lock counter");
       *counter += 1;
       let s : i32= *counter;
       println!("Current counter: {}", s);


вопрос: почему output такой:
Current counter: 1
Current counter: 1
Current counter: 1
Current counter: 1
Current counter: 2
Current counter: 2
Current counter: 2
Current counter: 2


и как исправить на уникальные порядковые значения?
источник

R

Roman Q in Rust Beginners
ну там и далее инкрементируется, но каждый раз по 4 одинаковых сообщения. что совпадает с числом ядер на машине
источник

a

antuan in Rust Beginners
а что возвращает Shema::build(...).data(...).finish()?
источник

R

Roman Q in Rust Beginners
pub fn create_schema_with_context(pool: PgPool) -> Schema<Query, Mutation, Subscription> {
   let kafka_consumer_counter = Arc::new(Mutex::new(0));

   Schema::build(Query, Mutation, Subscription)
       .data(kafka_consumer_counter)
       .finish()
}
источник

a

antuan in Rust Beginners
я не могу утверждать на 100% (ибо сам ненастоящий сварщик), но есть ощущение, что каунтер не клонится при создании Schema... а что-то ещё с ним делается)
источник

a

antuan in Rust Beginners
попробуй без вот этой схемы это сделать, просто каунтер в app_data просунуть. в арк\мьютекс обернутый, конечно же
источник

R

Roman Q in Rust Beginners
antuan
я не могу утверждать на 100% (ибо сам ненастоящий сварщик), но есть ощущение, что каунтер не клонится при создании Schema... а что-то ещё с ним делается)
не исключаю что нашел баг в той самой 3rd party lib
источник

a

antuan in Rust Beginners
Roman Q
не исключаю что нашел баг в той самой 3rd party lib
если это баг, конечно же)
источник

A

Arsen in Rust Beginners
Помогите плс с архитектурным решением, не знаю как решить эту проблему. У меня есть структура, одним из полей которой является енам. В структуре есть общие методы в независимости от значения енама, и так же есть методы, в которых логика строится на матче этих енамов. В простом сценарии (как я кинул), все более менее, но когда логика усложняется (много общих и не общих методов), то код становится не читаемым и по всем методам разбросаны матчи на енам. В ООП языке я бы просто сделал абстрактный класс и общие методы. Не общие методы я бы сделал абстрактными и реализовывал в чайлд классах, а как сделать в раст не знаю...
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1ea76b40513ac19437625b177d16206f
источник

a

antuan in Rust Beginners
Вынести эным наружу, общие методы вынести в сам энум.
Под каждый.вариант энума завести свою структуру. "Кастомные" методы сделать методами конкретных структур
источник

A

Arsen in Rust Beginners
понял, попробую, спасибо
источник

d

diabolo in Rust Beginners
Arsen
Помогите плс с архитектурным решением, не знаю как решить эту проблему. У меня есть структура, одним из полей которой является енам. В структуре есть общие методы в независимости от значения енама, и так же есть методы, в которых логика строится на матче этих енамов. В простом сценарии (как я кинул), все более менее, но когда логика усложняется (много общих и не общих методов), то код становится не читаемым и по всем методам разбросаны матчи на енам. В ООП языке я бы просто сделал абстрактный класс и общие методы. Не общие методы я бы сделал абстрактными и реализовывал в чайлд классах, а как сделать в раст не знаю...
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1ea76b40513ac19437625b177d16206f
а зачем так усложнять?
источник