Ответы пользователя по тегу Rust
  • Как разбить вектор на подвектора разной длинны?

    hrls
    @hrls
    fn main() {
        let values: Vec<u64> = vec![9, 7, 6, 3, 4, 0, 1, 7, 3, 9];
    
        let (_, groups): (Option<u64>, Vec<Vec<u64>>) = values
            .into_iter()
            .filter(|value| *value > 0)
            .fold((None, vec![]), |(previous, mut groups), current| {
                match previous {
                    Some(previous) if previous >= current => {
                        if let Some(last_group) = groups.last_mut() {
                            last_group.push(current);
                        } else {
                            groups.push(vec![current]);
                        }
                    }
                    _ => groups.push(vec![current]),
                };
                (Some(current), groups)
            });
    
        dbg!(&groups);
    
        let sums: Vec<u64> = groups
            .into_iter()
            .map(|group| group.into_iter().sum())
            .collect();
    
        dbg!(&sums);
    }


    https://play.rust-lang.org/?version=stable&mode=de...
    Ответ написан
    Комментировать
  • Кто может объяснить разницу между hyper и Tokio в Rust'е?

    hrls
    @hrls
    HTTP – протокол. Tokio – библиотека для написания сетевого кода, любого. Но парсить HTTP Tokio не умеет. Для этого есть Hyper – библиотека для написания HTTP серверов и клиентов. HTTP сервер на Hyper будет использовать Tokio для работы с соединениями, а парсить HTTP будет уже Hyper.
    В модели клиент-сервер очевидно есть клиент и сервер. HTTP клиент это все тот же сокет, только уже не серверный. Поэтому и тут Hyper может создавать запросы и парсить ответы. И также, возможно, для взаимодействия с сетью используя Tokio.
    Ответ написан
    Комментировать