Laboratoria: xx XII¶
Celem zajęć jest praca z językiem Rust w kontekście serwowania usług w sieci.
Wariant 1.¶
Napisz serwer webowy, który trzyma kolekcję liczników. Powinien wystawiać trzy endpointy:
register_counter
(zapytanie typuPOST
): Jedyny argument to napis, będący identyfikatorem nowego licznika.increase_counter
(zapytanie typuPOST
): Jako argument przyjmuje obiekt JSONowy, który powinien posiadać dwa pola: identyfikator licznika i wartość, o jaką powinien zostać zwiększony.get_counter
(zapytanie typuGET
): Jedyny argument to napis, będący identyfikatorem licznika. Powinien zwrócić aktualny stan.
Polecane frameworki:
Dalsze kroki:
- połączyć się z bazą danych (np.
diesel
) - dodać testy (włączając w to E2E - polecam dockeryzację i https://github.com/testcontainers/testcontainers-rs)
Wariant 2.¶
Napisz benchmarking liczenia tysiąckrotnej iteracji dowolnej funkcji haszującej. Benchmark powinien zostać wykonany w środowisku przeglądarki internetowej.
Szczegóły rozwiązania:
Strona internetowa powinna posiadać dwa przyciski:
- jeden z nich powinien uruchomić procedurę haszowania natywnie, w Java Scripcie
- drugi z nich powinien uruchomić procedurę haszowania w WebAssembly, zaimplementowaną w języku Rust
Po zakończeniu obliczeń powinna zostać wyświetlona informacja, jak długo trwał eksperyment.
Tutorial: https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_Wasm.