БЕГЕМОТИКОВ МОЖНО! Войти !bnw Сегодня Клубы
Привет, TbI — HRWKA! 1248.0 пользователей не могут ошибаться!
?7013
прекрасное6454
говно5926
говнорашка5512
хуита4738
anime3078
linux2668
music2647
bnw2607
рашка2587
log2375
ололо2267
дунч1885
pic1816
сталирасты1494
bnw_ppl1458
быдло1441
украина1439
дыбр1239
гімно1158

https://blog.rust-lang.org/2017/11/22/Rust-1.22.html "What’s in 1.22.0 and 1.22.1 stable The headline feature for this release is one many have been anticipating for a long time: you can now use ? with Option<T>! About a year ago, in Rust 1.13, we introduced the ? operator for working with Result<T, E>. Ever since then, there’s been discussion about how far ? should go: should it stay only for results? Should it be user-extensible? Should it be usable with Option<T>? In Rust 1.22, basic usage of ? with Option<T> is now stable. This code will now compile: fn try_option_some() -> Option<u8> { let val = Some(1)?; Some(val) } assert_eq!(try_option_some(), Some(1)); fn try_option_none() -> Option<u8> { let val = None?; Some(val) } assert_eq!(try_option_none(), None); However, this functionality is still a bit limited; you cannot yet write code that mixes results and options with ? in the same function, for example. This will be possible in the future, and already is in nightly Rust; expect to hear more about this in a future release. Types that implement Drop are now allowed in const and static items. Like this: struct Foo { a: u32 } impl Drop for Foo { fn drop(&mut self) {} } const F : Foo = Foo { a : 0 }; static S : Foo = Foo { a : 0 }; This change doesn’t bring much on its own, but as we improve our ability to compute things at compile-time, more and more will be possible in const and static. Additionally, some small quality-of-life improvements: Two recent compiler changes should speed up compiles in debug mode. We don’t have any specific numbers to commit to with these changes, but as always, compile times are very important to us, and we’re continuing to work on improving them. T op= &T now works for primitive types, which is a fancy way of saying: let mut x = 2; let y = &8; // this didn&#39;t work, but now does x += y; Previously, you’d have needed to write x += *y in order to de-reference, so this solves a small papercut."
#6P73I3 (1+1) / @o01eg / 3196 дней назад
Не прошло и ста лет https://github.com/nc4rrillo/indigo
#4060VN (0+1) / @o01eg / 3212 дней назад
http://jnep.sumdu.edu.ua:8080/download/numbers/2017/5/articles/Proof_JNEP_05015.pdf Моделирование магнитных гетероструктур с использованием языка Rust и MPI. Rust в компьютерное моделирование физических систем! Долой гегемонию C++!
#QR5UGE (4+1) / @corpse / 3222 дня назад
https://twitter.com/sdroege_/status/916357166088511488 "Naively re-implemented some @gstreamer C code in @rustlang for fun & result was ~1.7x faster. Zero-cost abstractions? I&#39;d say negative-cost Now optimizing the C code. There&#39;s no reason why it should be slower. But Rust apparently made it easier in this case to write fast code"
#E56948 (1+1) / @o01eg / 3244 дня назад
> lexszero‎: http://securityaffairs.co/wordpress/51126/malware/linux-trojan-irc16.html ура хороший системный яп
#YI9M3Z (2+3) / @ndtimofeev / 3269 дней назад
https://blog.rust-lang.org/2017/08/31/Rust-1.20.html "Rust 1.20 adds the ability to define “associated constants” as well: struct Struct; impl Struct { const ID: u32 = 0; } fn main() { println!("the ID of Struct is: {}", Struct::ID); } That is, the constant ID is associated with Struct. Like functions, associated constants work with traits and enums as well. Traits have an extra ability with associated constants that gives them some extra power. With a trait, you can use an associated constant in the same way you’d use an associated type: by declaring it, but not giving it a value. The implementor of the trait then declares its value upon implementation"
#VXV2GO (0) / @o01eg / 3280 дней назад
Красота, через три месяца в релизе: https://play.rust-lang.org/?gist=80cf2488c9daaedf43c73181a9bf2edb&version=nightly
#QXR9RF (0+1) / @o01eg / 3281 день назад
НИ ЕДИНОГО СЕГФОЛТА!!!! https://habrahabr.ru/company/erlyvideo/blog/334912/ "А чего там про Rust Вот как раз стример у нас ржавый. Целая пачка unsafe кода, автогенеренного из сишного кода SDK с помощью bindgen, подпатченый биндинг к libc (постараемся залить патч в апстрим) и дальше реализация RTSP на tokio. Даже уже есть возможность посмотреть видео с камеры в обычном браузере — это недостижимая роскошь для китайских камер, которые поголовно требуют установку ActiveX. Структура очень непривычна после эрланга: ведь тут нет процессов и сообщений, есть каналы, а с ними всё становится немножко по-другому. Как я уже выше писал, современно написанный код с правильной организацией дает возможность раздавать видео не 2-3 клиентам, а более 50 без какой-либо просадки производительности. Важный момент: за время разработки пока не случилось ни единого сегфолта. Пока есть стойкое ощущение, что Rust заставляет писать так, как в принципе пишут хорошие поседевшие сишники, повидавшие всякого нехорошего. Так что пока всё нравится. В течение августа есть планы закончить работу по базовому сценарию, так что есть вопрос к аудитории, который идет в опросе. Ну и задавайте вопросы, которые возникли."
#NGXQPU (0+1) / @o01eg / 3307 дней назад
https://spb.hh.ru/vacancy/21894554 "Требования Опыт backend-разработки на Rust не менее 2 лет."
#ZH5DRP (0) / @o01eg / 3331 день назад
У меня одного метод https://docs.rs/tokio-postgres/0.2.3/tokio_postgres/struct.Connection.html#method.execute зависает в реакторе? query в асинхронной версии и execute в синхронной спокойно работают, а этот висит со статусом idle и не завершает свой Future.
#8PD492 (0+1) / @o01eg / 3344 дня назад
Хозяйке на заметку: let future_returns_db_connection = ...; let prog = future_returns_db_connection.and_then(|db_connection| { your_stream_wants_to_work_with_db.fold(db_connection, |also_db_connection, value| { also_db_connection.just_another_db_query_moveouts_connection_and_return_a_new_one() }) })
#MBJO51 (1) / @o01eg / 3352 дня назад
Хозяйке на заметку: fn main() { let mut core = Core::new().expect("Can&#39;t create Tokio Core"); let handle = core.handle(); // Use only one Ctrl+C signal. let ctrl_c = tokio_signal::ctrl_c(&handle).flatten_stream().take(1).map(|_| false); let interval = Interval::new(Duration::from_secs(1), &handle).expect("Cann&#39;t create timer").map(|_| true); // Process each ctrl-c as it comes in let prog = ctrl_c .select(interval) .take_while(|c| Ok(*c)) // stop when Ctrl+C .for_each(|c| { println!("{:?}", c); future::ok(()) }); match core.run(prog) { Ok(o) => println!("Finish: {:?}", o), Err(e) => println!("Error: {}", e), }; }
#LC4YX3 (2) / @o01eg / 3354 дня назад
https://blog.rust-lang.org/2017/06/08/Rust-1.18.html "What’s in 1.18.0 stable As usual, Rust 1.18.0 is a collection of improvements, cleanups, and new features. One of the largest changes is a long time coming: core team members Carol Nichols and Steve Klabnik have been writing a new edition of “The Rust Programming Language”, the official book about Rust. It’s being written openly on GitHub, and has over a hundred contributors in total. This release includes the first draft of the second edition in our online documentation. 19 out of 20 chapters have a draft; the draft of chapter 20 will land in Rust 1.19. When the book is done, a print version will be made available through No Starch Press, if you’d like a paper copy. We’re still working with the editors at No Starch to improve the text, but we wanted to start getting a wider audience now. The new edition is a complete re-write from the ground up, using the last two years of knowledge we’ve gained from teaching people Rust. You’ll find brand-new explanations for a lot of Rust’s core concepts, new projects to build, and all kinds of other good stuff. Please check it out and let us know what you think! As for the language itself, an old feature has learned some new tricks: the pub keyword has been expanded a bit. Experienced Rustaceans will know that items are private by default in Rust, and you can use the pub keyword to make them public. In Rust 1.18.0, pub has gained a new form: pub(crate) bar; The bit inside of () is a ‘restriction’, which refines the notion of how this is made public. Using the crate keyword like the example above means that bar would be public to the entire crate, but not outside of it. This makes it easier to declare APIs that are “public to your crate”, but not exposed to your users. This was possible with the existing module system, but often very awkward. You can also specify a path, like this: pub(in a::b::c) foo; This means “usable within the hierarchy of a::b::c, but not elsewhere.” This feature was defined in RFC 1422 and is documented in the reference. For our Windows users, Rust 1.18.0 has a new attribute, #![windows_subsystem]. It works like this: #![windows_subsystem(console)] #![windows_subsystem(windows)] These control the /SUBSYSTEM flag in the linker. For now, only console and windows are supported. When is this useful? In the simplest terms, if you’re developing a graphical application, and do not specify windows, a console window would flash up upon your application’s start. With this flag, it won’t. Finally, Rust’s tuples, enum variant fields, and structs (without #[repr]) have always had an undefined layout. We’ve turned on automatic re-ordering, which can result in smaller sizes through reducing padding..."
#2DINCJ (0+1) / @o01eg / 3364 дня назад

http://blog.japaric.io/quickstart/
↖ статья о том как модно писать на русте под stm32 на этой неделе.
tldr: берем пару крейтов для базового cortex-m, генерируем 200 килострок кода для работы с периферией из SVD (til есть репозиторий с машиночитаемыми описаниями регистров кучи мк), ..., выгода. даже дебагать гдбшечкой можно, для нормальной жизни не хватает только scheduler/rtos или чего-то подобного.
а вот zinc.rs на который я фапал некоторое время назад, кажется, помер.

#2OA42D (6) / @lexszero / 3404 дня назад
#3ABU4N (0+1) / @o01eg / 3409 дней назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.