• 10 Posts
  • 24 Comments
Joined 2 years ago
cake
Cake day: June 4th, 2023

help-circle









  • yeah, you are right, I don’t need mut. here is the improved version:

    use axum::{extract::Path, routing::get, routing::post, Router};
    use std::fs::{read_to_string, File};
    use std::io::prelude::*;
    use std::sync::atomic::{AtomicUsize, Ordering};
    
    const MAX_FILE_SIZE: usize = 1024 * 1024 * 10;
    static FILE_COUNT: AtomicUsize = AtomicUsize::new(0);
    
    async fn handle(Path(id): Path<String>) -> String {
        match read_to_string(id) {
            Ok(content) => content,
            Err(e) => e.to_string(),
        }
    }
    
    async fn submit_handle(bytes: String) -> String {
        dbg!(&bytes);
        if bytes.len() > MAX_FILE_SIZE {
            // Don't store the file if it exceeds max size
            return String::from("ERROR: max size exceeded");
        }
        let path = FILE_COUNT.load(Ordering::Relaxed);
        FILE_COUNT.fetch_add(1, Ordering::SeqCst);
        let mut output = File::create(path.to_string()).unwrap();
        write!(output, "{}", bytes).unwrap();
        let mut url = String::from("http://localhost:3000/");
        url.push_str(&path.to_string());
        return url;
    }
    
    #[tokio::main]
    async fn main() {
        let app = Router::new()
            .route("/", get(|| async { "Paste something in pastebin! use curl -X POST http://localhost:3000/submit -d 'this is some data'" }))
            .route("/{id}", get(handle))
            .route("/submit", post(submit_handle));
    
        let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
            .await
            .unwrap();
        axum::serve(listener, app).await.unwrap();
    }
    
    

















  • done :D

    use std::io;
    
    fn main() {
        let mut input: String = String::new();
        let stdin = io::stdin();
    
        let x = rand::random::<u32>() % 101;
        let mut attempts = 0;
    
        let mut user_inputs: Vec<u32> = Vec::new();
        loop {
            println!("Guess a number from 0 to 100:");
            stdin.read_line(&mut input);
            input = input.to_string().replace("\n", ""); // removing the \n
            let user_input: u32 = input.parse::<u32>().unwrap();
    	user_inputs.push(user_input);
            if x == user_input {
                println!("You won! attempts: {attempts}");
    	    println!("Your inputs:");
    	    for input in user_inputs {
    		print!("{input} ");
    	    }
    	    println!("");
                break;
            }
            else if x < user_input {
                println!("too big");
                attempts += 1;
            }
            else {
                println!("too small");
                attempts += 1;
            }
            input.clear()
        }
    }