1) Diesel синхронен. 2) sqlx не ORM. 3) Как выше подметил @Fenex, actix-web и actix это разные вещи. Насколько я знаю, actix-web на данный момент не использует actix (прочитал об этом на Reddit).
Вообще строки в Rust появились вопреки, а не почему. Тип String под капотом Vec<u8>, то есть вектор байт. Есть ещё &str - строковый слайс. Обычно, когда говорят про строки в Rust, имеют в виду эти 2 типа. Если String может быть мутабельным,то &str изменить напрямую никак нельзя. Есть ещё такая особенность: вы не можете индексировать строку. fn main() { let my_string1 = "45456456"; let my_string2 = String::from("45456456"); println!("{}", my_string1[0]); println!("{}", my_string2[0]); } Этот код не может быть скомпилирован, будет ошибка error[E0277]: the type str cannot be indexed by {integer}
Всё это следствие безопасности языка. P.S.: поправьте меня, если я не прав.
1) Diesel синхронен.
2) sqlx не ORM.
3) Как выше подметил @Fenex, actix-web и actix это разные вещи. Насколько я знаю, actix-web на данный момент не использует actix (прочитал об этом на Reddit).
Наверное, вы имели в виду детерминированный?
Вольный пересказ книги "The Rust programming language".
Вообще строки в Rust появились вопреки, а не почему. Тип
String
под капотомVec<u8>
, то есть вектор байт. Есть ещё&str
- строковый слайс. Обычно, когда говорят про строки в Rust, имеют в виду эти 2 типа.Если
String
может быть мутабельным,то&str
изменить напрямую никак нельзя.Есть ещё такая особенность: вы не можете индексировать строку.
fn main() {
Этот код не может быть скомпилирован, будет ошибкаlet my_string1 = "45456456";
let my_string2 = String::from("45456456");
println!("{}", my_string1[0]);
println!("{}", my_string2[0]);
}
error[E0277]: the type str cannot be indexed by {integer}
Всё это следствие безопасности языка.
P.S.: поправьте меня, если я не прав.