Size: a a a

2020 October 26

S

Sooqa in Rust Async
Тоесть
Если
Сделать
Vec<dyn K>
Оно само запретит мутабельность или что?
источник

MB

Mikail Bagishov in Rust Async
Вектор по-моему ковариантен
источник

в🧇

вафель 🧇 in Rust Async
Sooqa
Тоесть
Если
Сделать
Vec<dyn K>
Оно само запретит мутабельность или что?
Vec<dyn K> ты в принципе не сделаешь, начнём с этого
источник

S

Sooqa in Rust Async
вафель 🧇
Vec<dyn K> ты в принципе не сделаешь, начнём с этого
Надо в бокс положить?
источник

в🧇

вафель 🧇 in Rust Async
Sooqa
Надо в бокс положить?
Ну например
источник

S

Sooqa in Rust Async
Хорошо тогда Vec<box<dyn K>> ковариантен?
источник

в🧇

вафель 🧇 in Rust Async
Sooqa
Хорошо тогда Vec<box<dyn K>> ковариантен?
источник

MB

Mikail Bagishov in Rust Async
Есть какой-то атрибут на функцию, чтобы компилятор напечатал вариантность
источник
2020 October 27

ID

Ivan Dubrov in Rust Async
А есть где-нибудь адекватный пример TLS сервера на Hyper? Че-то я заблудился во всех этих rustls/native-tls/tokio-tls/tokio-native-tls.
Я в warp нашел кусок кода, но че-то там много boilerplate и плюс он rustls использует, а не native-tls.
источник

ID

Ivan Dubrov in Rust Async
Окей, кажется, собрал чего-то.
источник

AV

A V in Rust Async
Ivan Dubrov
А есть где-нибудь адекватный пример TLS сервера на Hyper? Че-то я заблудился во всех этих rustls/native-tls/tokio-tls/tokio-native-tls.
Я в warp нашел кусок кода, но че-то там много boilerplate и плюс он rustls использует, а не native-tls.
насколько я знаю, надо брать tokio-rustls
источник

ID

Ivan Dubrov in Rust Async
Да. Как-то так собрал:
let addr = SocketAddr::from(([0, 0, 0, 0], 8002));
 let mut tcp = tokio::net::TcpListener::bind(&addr).await?;
 let tls_acceptor = tokio_rustls::TlsAcceptor::from(Arc::new(config));
 let incoming = tcp
   .incoming()
   // FIXME: will multiple sockets be accepted concurrently?
   .and_then(|conn| tls_acceptor.accept(conn));

 let acceptor = hyper::server::accept::from_stream(incoming);
 let server = Server::builder(acceptor).serve(make_svc);
источник

ID

Ivan Dubrov in Rust Async
насчет FIXME надо подумать еще, по-моему, я не правильно написал (мне кажется, оно пока TLS не зааксептит, не будет следующий сокет обрабатывать, но это не точно)
источник

D

Denis in Rust Async
Ivan Dubrov
насчет FIXME надо подумать еще, по-моему, я не правильно написал (мне кажется, оно пока TLS не зааксептит, не будет следующий сокет обрабатывать, но это не точно)
> мне кажется, оно пока TLS не зааксептит, не будет следующий сокет обрабатывать

ну да, всё так
источник

D

Denis in Rust Async
хайпер будет отстреливает таски после получения заврапленного сокета, ну т.е. он делает, грубо говоря,

while let Some(connection) = incoming.next().await {
// ..
tokio::spawn(..)
}
источник

ID

Ivan Dubrov in Rust Async
угу. т.е для TLS их from_stream мне не пойдет (ну или надо делать какой-то lazy stream который будет tls_acceptor.accept делать при попытке чтения из него)
источник

D

Denis in Rust Async
ну скорее не lazy stream, а lazy connection :)
источник

ID

Ivan Dubrov in Rust Async
да
источник

D

Denis in Rust Async
заменять их from_stream своей имплементацией трейта Accept, кажется, не получится в том смысле, что это ничего не даст
источник

D

Denis in Rust Async
т.е. всё равно он сначала вытаскивает коннекшон, а потом только спавнит таску
источник