missing tokens in macro arguments
macro_rules! name {
($t: ty, $({$($el:expr ),*}),*) => {42};
}
fn main() {
name!(i32, {1, 2, 3 ,4}, {1,2});
}
#[get("/index")]
pub async fn index() -> impl Responder {
let path = Path::new("test.txt");
spawn_blocking(|| cat(path)).await?
}
fn cat(path: &Path) -> io::Result<String> {
let mut f = File::open(path)?;
let mut s = String::new();
match f.read_to_string(&mut s) {
Ok(_) => Ok(s),
Err(e) => Err(e),
}
}
[dependencies]
reqwest = { version = "0.11", features = ["blocking", "json"] } #blocking - только для примера, чтобы не нагружать await-ами. json - чтобы добавить возможность десериализации ответа при помощи serde-json
use std::collections::HashMap;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::blocking::get("https://httpbin.org/ip")?
.json::<HashMap<String, String>>()?; // Тут нужно подставлять тот тип, который реализует трейт Deserialize
println!("{:#?}", resp);
Ok(())
}
Во первых, почему указатели в Rust называются ссылками?
Вот как это вместить - после плюсов вызывает неприязнь.
Rust появился в 2006
на данное время крупных проектов использующие его (кроме дискорда) нет
Насколько я знаю,в c++ несколькими строчками можно задать размер открываемой консоли в пикселях.
&'static str
. Тоесть это заимствованная ссылка на объект с неограниченным временем жизни.std::string::String
let a: String = String::from("a");
let b: String = "b".to_string();
let c: String = "c".into(); // или "c".into::<String>(), если не указывать тип явно.
let d: String = "d".to_owned();
Он же нигде в этом коде не используется
use std::io;
fn main() -> io::Result<()>{
let mut input = String::new();
println!("Введите свое имя: ");
io::stdin().read_line(&mut input)?; // Тут
println!("Ваш имя: {}", input);
Ok(()) // И тут
}
❯ cargo -V
cargo 1.58.0 (7f08ace4f 2021-11-24)
❯ rustup toolchain list
stable-x86_64-pc-windows-msvc (default)
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'rust-demo'",
"cargo": {
"args": [
"build",
"--bin=rust-demo",
"--package=rust-demo"
],
"filter": {
"name": "rust-demo",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'rust-demo'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=rust-demo",
"--package=rust-demo"
],
"filter": {
"name": "rust-demo",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
Уже можно его брать за основу для продукта или это будет "плакали - кололись и продолжали жевать"?
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(())
}
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, один раз установил либру, пользуешься везде!
то она будет скачана и скомпилирована, а затем в другом проекте мне понадобится таже библиотека, и в итоге она будет опять скачена и скомпилина,
Почему скомпилированный «Hello World», на Rust занимает на диске 10 Мегабайт?