Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    af fd
    @fsdfa_gitlab
    Решается . Мне картинки с bing maps нужны, я их выкачиваю.
    Про капчу я не знаю, это для меня сильно сложно.
    Adilet
    @sadilet

    Ребят , всем привет. Помогите пожалуйста разобраться. Я в целом понимаю, зачем нужно время жизни, но на уровне синтаксиса не до конца могу освоить.

    struct TestCase<'a> {
        model_type: &'a str,
        model_names: Vec<&'a str>,
        data_file: &'a str,
    }
    
    
    impl<'a> TestCase<'a> {
        fn new(model_type: &'a str, model_names: Vec<&'a str>, data_file: &'a str) -> TestCase {
            // some transformations
            TestCase{
    
            }
        }
    }

    При возврате TestCase он мне пишет, что missing lifetime, можете помочь разобраться что не так?
    Хочу повесить время жизни на TestCase, ошибка продолжает светить.

    Denis Lisov
    @tanriol
    @sadilet Тип возвращаемого значения нужно писать TestCase<'a> (ну или Self, что в данном случае то же самое)
    Adilet
    @sadilet
    Ок. Спасибо. Что-то упустил в момент изучения.
    Psilon
    @Pzixel
    лайфтаймы точно такие же генерик параметры как и <T>
    просто одно является утверждением "для любых типов Т", а в другом "для любых лайфтаймов 'a"
    так что совершенно логично что тип с открытыми генериками нельзя использовать
    строго говоря это даже не тип
    Denis Lisov
    @tanriol
    @Pzixel Что не отменяет того, что в ряде контекстов их таки технически можно опускать...
    Psilon
    @Pzixel
    В каких контекстах можно опускать 'a при описании генерик-параметров?
    разве что '_, но это обобщенный синтаксис "выведи за меня"
    Denis Lisov
    @tanriol
    А ссылку ты за генерик считаешь? :-)
    Psilon
    @Pzixel
    это не генерик-параметр
    я про описание типами
    то есть опускание в сигнатурах фунок когда очевидно - это не то
    это как опускание типа у self
    особенность конкретной записи
    лайтаймы это типы, и опускаются тогда же когда и они + для них есть синтаксис короткой записи в конкретных сценариях.
    КОроч смотря что считать контекстом
    если все использования лайтаймов - то там есть нюансы и упрощения чтобы не писать их как ненормальный
    если в контексте сигнатур типов - то точно так же испльзуются
    Denis Lisov
    @tanriol
    Если бы у функции TestCase::new в примере выше был только один аргумент с лайфтаймом, запись -> TestCase { ... вполне сработала бы ;-)
    Она не срабатывает потому, что компилятор видит более одного лайфтайма и говорит "так, стоп, а из какого оно позаимствовано-то", не обращая внимания, что они одинаковые :-)
    (вообще я думал, что в 2018 редакции это выдаёт предупреждение, но нет)
    Psilon
    @Pzixel
    ну хзхз
    Psilon
    @Pzixel
    тут был вопрос про msvc или мне показалось?
    Aleksey Melnikov
    @aleksmelnikov
    Поставилось, поэтому удалил как неактуальное )
    Psilon
    @Pzixel
    оке
    Aleksey Melnikov
    @aleksmelnikov
    Привет. Может ли кто подсказать с примером из доки: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=3d23381db35e097f5b1e41c9f0475562. Как собственно подать на вход bool = true или str= "value" в main?
    Denis Lisov
    @tanriol
    @aleksmelnikov А что ты сделать-то пытаешься?
    Aleksey Melnikov
    @aleksmelnikov
    @tanriol , понять пример из доки: https://docs.rs/syn/1.0.60/syn/macro.custom_keyword.html. Пишут: This example parses input that looks like bool = true or str = "value". Как это сформирвовать в main? Чтобы получить целиковый пример.
    Denis Lisov
    @tanriol
    Это функциональность, предназначенная в первую очередь для proc macro, а у них точка входа не main.
    Denis Lisov
    @tanriol
    Если ты хочешь именно standalone-пример, то что-нибудь в стиле (Argument::parse).parse_str("bool = false") должно, по идее, сработать.
    Aleksey Melnikov
    @aleksmelnikov
    Спасибо! Это то что нужно. Только пока этой записи не понимаю.
    Aleksey Melnikov
    @aleksmelnikov
    @tanriol, можете ли пояснить конструкцию?
    Denis Lisov
    @tanriol
    parse_str - это метод трейта syn::parse::Parser, у которого есть встроенная реализация для любой функции с подходящей сигнатурой, в том числе Argument::parse
    Aleksey Melnikov
    @aleksmelnikov
    Спа
    Psilon
    @Pzixel
    а зачем скобки вокруг функи? Выглядит странно
    А, понял. Там импл для Fn
    офигенно придумали (нет)
    mnnxp
    @mnnxp

    Всем привет :) Подскажите, пожалуйста, кто нибудь интегрировался с Backblaze с генерацией предварительно подписанных url?
    Генерирую ссылку таким кодом (крейт rusoto_s3):

    let req = rusoto_s3::PutObjectRequest {
                bucket: "cdbs-test".to_string(),
                key: "path_file".to_string(),
                content_length: Some(33_i64),
                content_type: Some("text/html".to_string()),
                ..Default::default()
    };
    
    req.get_presigned_url(
                &self.region,
                &self.credentials,
                &PreSignedRequestOption {
                    expires_in: std::time::Duration::from_secs(expires)
                },
    )

    а сервер отвечает, что не находит заголовок: Missing header: Content-Length
    Сталкивался кто нибудь с такой проблемой, может другие решения есть? (или такое же дешевое s3 хранилище))

    Psilon
    @Pzixel
    Сделай curl --verbose
    и покажи че сервер отвечает
    а, или это клиентский код? Тогда посмотри в фиддлере что посылается
    mnnxp
    @mnnxp
    Благодарю за ответ. Заголовок действительно исключается перед кодированием в строку с заголовками, делается это в функции rusoto_s3.
    // строка 680 <https://github.com/rusoto/rusoto/blob/master/rusoto/signature/src/signature.rs>
    fn skipped_headers(header: &str) -> bool {
        ["authorization", "content-length", "user-agent"].contains(&header)
    }
    sobaka_v_kepke
    @chabapok_twitter
    а почему так происходит, и можно ли избежать move? - https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=5f7eb4f64a144dd649f5da49e2f9e129
    Psilon
    @Pzixel
    Интересный вопрос
    Psilon
    @Pzixel
    видимо параметры функции живут дольше чем локальные переменные. Не знал этого, и с чем связано сказать не могу. Но по всем признакам оно так работает, придется с этим жить