cfg(all(windows, target_env="msvc"))
fn main() {
let items = [1,2];
let mut iter = items.into_iter().map(|x|5+x);
let a = iter.next().unwrap();
let b = iter.next().unwrap();
println!("{a} {b}");
}
fn main() {
let items = [1,2];
let [a,b] = items.map(|x|5+x);
println!("{a} {b}");
}
use itertools::Itertools; // 0.9.0
fn main() {
let items = [1,2];
let (a,b) = items.iter().map(|x|5+x).next_tuple().unwrap();
println!("{a} {b}");
}
cargo build --offline
cargo fetch
или cargo vendor
cargo init
cargo add rand
cargo vendor
(с доступом в интернет).cargo/config.toml
с содержимым [source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
fn main() {
let x: i32 = rand::random();
println!("{}", x);
}
cargo build --release --offline
(без доступа в интернет)fn read() -> Result<(), io::Err> {
//let vec: Vec<u8> = !vec[2, 5, 8, 10, 15, 16];
let pos1 = self.responce.iter().position(|&el| el == 8).ok_or_else(||io::Err::new("understading message"))?;
let pos2 = self.responce.iter().position(|&el| el == 15).ok_or_else(||io::Err::new("understading message"))?;
let pos3 = self.responce.iter().position(|&el| el == 12).ok_or_else(||io::Err::new("understading message"))?;
return Ok(());
}
на данное время крупных проектов использующие его (кроме дискорда) нет
use std::{fs::OpenOptions, io::Write, path::Path};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let target = "https://www.rust-lang.org/static/images/rust-logo-blk.svg";
let response = reqwest::get(target).await?;
let path = Path::new("./image.svg");
let mut file = OpenOptions::new().create(true).write(true).open(path)?;
let content = response.text().await?;
file.write_all(content.as_bytes())?; // Хочу асинхронно писать в файлы. Как это можно сделать?
Ok(())
}
impl UserRssItemsFilter for FilterByLastRequestData {
fn filter(&self, user: i64, rep: &String, item: &RssItem) -> bool {
let key = format!("{} {}", user, rep);
let r = self.last_request_cache.write(|db| {
let last_request: DateTime<Utc> = if let Some(last_request_str) = db.get(&key) {
DateTime::parse_from_rfc2822(&last_request_str).unwrap().into()
} else {
Utc::now() - Duration::days(2)
};
if last_request < item.created_date {
db.insert(key, item.created_date.to_rfc2822());
true
} else {
false
}
}).unwrap();
self.last_request_cache.save().unwrap();
r
}
}
impl UserRssItemsFilter for FilterByLastRequestData {
fn filter(&self, user: i64, rep: &String, item: &RssItem) -> bool {
let key = format!("{} {}", user, rep);
let last_request = match self.last_request_cache.read(|db| {
match db.get(&key) {
Some(v) => Some(DateTime::parse_from_rfc2822(v).unwrap().into()),
None => None
}
}).unwrap() {
Some(v) => v,
None => Utc::now() - Duration::days(2)
};
if last_request < item.created_date {
self.last_request_cache.write(|db| {
db.insert(key, item.created_date.to_rfc2822());
}).unwrap();
self.last_request_cache.save().unwrap();
true
} else {
false
}
}
}
use raylib::prelude::*;
fn main() {
let (mut rl, thread) = raylib::init()
.size(640, 480)
.title("Hello, World")
.build();
while !rl.window_should_close() {
let mut d = rl.begin_drawing(&thread);
d.clear_background(Color::WHITE);
d.draw_text("Hello, world!", 12, 12, 20, Color::BLACK);
}
}
Как безболезненно перейти с Python на Rust?
1) Python медленный
2) В python нет адекватного управления памятью
3) В python мне приходится испльзовать кучу мегабайт библиотек (я чувствую себя тупым и бесполезным при импортировании библеотек)
4) Python кажется игрушечным языком
5) Python не подходит род микроконтроллеры (micropython - просто игрушка)
6) Проблемы из-за GIL'а