#curl #rust #runtime-error
#curl #Ржавчина #ошибка во время выполнения
Вопрос:
Я использую rust-slack и столкнулся с ошибкой во время выполнения, которую трудно понять такому новичку, как я:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0', ../src/libcollections/vec.rs:1265
stack backtrace:
1: 0x55c042e567e9 - std::sys::backtrace::tracing::imp::write::h00e948915d1e4c72
2: 0x55c042e5d9fc - std::panicking::default_hook::_{{closure}}::h7b8a142818383fb8
3: 0x55c042e5cc49 - std::panicking::default_hook::h41cf296f654245d7
4: 0x55c042e5d338 - std::panicking::rust_panic_with_hook::h4cbd7ca63ce1aee9
5: 0x55c042e5d192 - std::panicking::begin_panic::h93672d0313d5e8e9
6: 0x55c042e5d100 - std::panicking::begin_panic_fmt::hd0daa02942245d81
7: 0x55c042e5d081 - rust_begin_unwind
8: 0x55c042e936df - core::panicking::panic_fmt::hbfc935564d134c1b
9: 0x55c042e93683 - core::panicking::panic_bounds_check::h08d619adcd972898
10: 0x55c042e1f3db - curl::easy::Easy::cvt::h8b0cee78a8555d56
11: 0x55c042e1f1fd - curl::easy::Easy::setopt_path::h97000cc95ffaf29e
12: 0x55c042e20e05 - curl::easy::default_configure::h81b9c3a40aadad76
13: 0x55c042e1e715 - curl::easy::Easy::new::h6256decf6c19f143
14: 0x55c042db16e4 - slack_hook::slack::Slack::send::h14b50e23bd1ee165
15: 0x55c042dab5af - deployer::main::had2f8b13f079aa74
16: 0x55c042e654e6 - __rust_maybe_catch_panic
17: 0x55c042e5c3c2 - std::rt::lang_start::h53bf99b0829cc03c
18: 0x7f176846682f - __libc_start_main
19: 0x55c042da5e98 - _start
20: 0x0 - <unknown>
- Он компилируется и работает на macOS (без паники).
- Он компилируется, но завершается с ошибкой (см. Ошибку Выше) на почти новой Ubuntu 16.04.
У меня есть некоторые println!
следы в моем приложении, поэтому я знаю, где он выходит из строя, и 20-я строка обратной трассировки, похоже, говорит, что это тоже здесь. По иронии судьбы, функция вызывается success
и является последним шагом длинного скрипта:
fn success() {
let slack = Slack::new("https://hooks.slack.com/MY_HOOK_URL").unwrap();
let p = PayloadBuilder::new()
.text("Deployment success.")
.channel("#app-notifier")
.username("Deploy Bot")
.icon_emoji(":tropical_drink:")
.build()
.unwrap();
let res = slack.send(amp;p);
match res {
Ok(()) => println!("Success msg sent."),
Err(x) => println!("<!> Success error ^^: {:?}",x)
}
}
URL-адрес Slack работает на моем локальном компьютере. Как исправить этот конкретный случай самостоятельно? Мне просто нужны некоторые подсказки.
Комментарии:
1. Неясно, в чем здесь вопрос: название, похоже, подразумевает, что вы не понимаете, что использование индекса 0 в коллекции размера 0 вызовет панику … однако вопросы, похоже, в основном объясняют, ПОЧЕМУ здесь появляется этот индекс 0. Я бы предложил отредактировать заголовок, чтобы сделать его
slack
доступным, поскольку это суть вопроса.2. @MatthieuM. Спасибо! Вы правы, я только что отредактировал его. Теперь лучше?
3. Отлично, теперь выглядит намного лучше 🙂 Хотя, конечно, теперь я понятия не имею, в чем проблема: x
4. По-видимому, эта проблема (или, по крайней мере, подпроблема) теперь исправлена: проблема на GitHub .
Ответ №1:
Это была проблема в curl-rust. Исправлена эта проблема. Мне просто нужно было запустить cargo update
, затем перестроить, и теперь все в порядке.
Спасибо Лукасу Калбертодту, Алексу Крайтону и автору rust-slack за их помощь.