Wątek przeniesiony 2023-03-17 13:00 z Inne języki programowania przez Patryk27.

Wysyłanie zapytania HTTP

0

Cześć,
zaczynam swoją przygodę z RUST i mam oto taki temat do rozwiązania. Mam prosta strukturę:

pub struct Sem {
name: String,
state: bool,
}

zadaniem jest napisanie funkcji która zapuka do bazy danych i sprawdzi statusy wszystkich przekazanych w wektorze listy struktur po name.
No i przyznam się że utknąłem i nie bardzo umiem sobie poradzić.
Jak na razie wymyśliłem coś takiego ale kompilator nie zgadza się ze mną:

pub fn get_stat_sem_list(service_url: String, name: Vec<Sem>) -> Vec<Sem>> {
    
    let mut criteria: String = "";

    for i in &name {
    
    let resp = match reqwest::blocking::get(format!("{service_url}/simple/airflow_resources/semaphore?{criteria}")) {
        Ok(resp) => resp,
        Err(err) => {
            error!("Błąd wywołania api: {:?}", err);
            return Err(PyTypeError::new_err(err.to_string()));
        }
    };

i na dodatek to wszystko ma być wywoływane z Pythona.

2

ale kompilator nie zgadza się ze mną:

Co to znaczy?

1
  1. Jak "kompilator się ze mną nie zgadza", to podaj dlaczego.
  2. Vec jako argument do funkcji to praktycznie zawsze zły pomysł.
  3. Czemu zwracasz Vec<Sem>? Przecież to nie pasuje do kodu, bo na pewno zwracasz jakiś Result<Coś, PyTypeError>.
  4. let mut criteria: String = ""; nie ma prawa się skompilować, bo przypisujesz &'static str do String, co nie ma prawa zadziałać.
1
Pewex napisał(a):

Cześć,
zaczynam swoją przygodę z RUST i mam oto taki temat do rozwiązania. Mam prosta strukturę:

pub struct Sem {
name: String,
state: bool,
}

zadaniem jest napisanie funkcji która zapuka do bazy danych i sprawdzi statusy wszystkich przekazanych w wektorze listy struktur po name.
No i przyznam się że utknąłem i nie bardzo umiem sobie poradzić.
Jak na razie wymyśliłem coś takiego ale kompilator nie zgadza się ze mną:

pub fn get_stat_sem_list(service_url: String, name: Vec<Sem>) -> Vec<Sem>> {
    
    let mut criteria: String = "";

    for i in &name {
    
    let resp = match reqwest::blocking::get(format!("{service_url}/simple/airflow_resources/semaphore?{criteria}")) {
        Ok(resp) => resp,
        Err(err) => {
            error!("Błąd wywołania api: {:?}", err);
            return Err(PyTypeError::new_err(err.to_string()));
        }
    };

i na dodatek to wszystko ma być wywoływane z Pythona.

Zrób przykład w oparciu o https://www.rustexplorer.com

1 użytkowników online, w tym zalogowanych: 0, gości: 1