Как добавить в приложение такие ресурсы, как текстовые файлы или исполняемые файлы?

я попробовал этот код

static HOST_FILE: &'static [u8] = include_bytes!("C:\\Users\\Downloads\\cbimage.png");

fn main() {
     let host_str = std::str::from_utf8(HOST_FILE). unwrap();

     println!("Hosts are:\n{}", &host_str[..42]);
}

Но он показывает мне ошибку: поток 'main' запаниковал при вызове Result::unwrap() по значению Err: Utf8Error {valid_up_to: 66, error_len: Some(1) }', src\main.rs:48:51 трассировка стека

Отвечает ли это на ваш вопрос? Есть ли способ включить бинарные или текстовые файлы в библиотеку Rust?

Finomnis 04.12.2022 09:25

@Finomnis Я пробовал, но выдает ошибку Utf8Error {valid_up_to: 0, error_len: Some(1) }'

kcbbcn otfemb 04.12.2022 09:37

@Finomnis Я попробовал и второй пример. И появилась ошибка: индекс байта 42 выходит за пределы кода: static HOST_FILE: &'static str = include_str!("C:\\Users\\Desktop\\hello desktop. txt "); fn main() { println!("Хосты:\n{}", &HOST_FILE[..42]); } На что указывает число 42?

kcbbcn otfemb 04.12.2022 09:47

Ваши комментарии превращают вопрос в другой вопрос. Откройте новый с минимальным воспроизводимым примером, включая ваш код, сообщения об ошибках и текстовый файл.

kotatsuyaki 04.12.2022 09:54

@Finomnis В настоящее время у меня есть один пример, который содержит только этот код static HOST_FILE: &'static[u8] = include_bytes!("/etc/hosts"); fn main() { let host_str = std::str::from_utf8(HOST_FILE). развернуть(); println!("Хосты:\n{}", &host_str[..42]); } Но у меня выдает ошибку!

kcbbcn otfemb 04.12.2022 10:00

Пожалуйста, не используйте комментарии, чтобы обновить свой вопрос, отредактируйте свой вопрос напрямую :)

Finomnis 04.12.2022 10:00

Но это дает мне ошибку!" - Пожалуйста, не делайте подобных заявлений, не показывая ошибки. Одно лишь знание того, что на вашем компьютере происходит сбой, не дает нам никакой информации, с которой мы могли бы вам помочь.

Finomnis 04.12.2022 10:02

Я думаю .. не использовать 42? Я не уверен, почему это часть другого вопроса, но никогда не копируйте и не вставляйте код из Интернета в свой проект, который вы не понимаете! Это одно из самых основных правил stackoverflow. Всегда разбирайтесь и проверяйте код, который вы копируете из Интернета. Есть тролли, и были случаи, когда люди делали других людей sudo rm -rf /.

Finomnis 04.12.2022 10:04

Что ж, теперь я изменил свой вопрос, я рассмотрю проблему 42 и удостоверюсь,

kcbbcn otfemb 04.12.2022 10:09

Как вы думаете, почему файл png действителен в формате utf8?

cafce25 04.12.2022 11:00

@cafce25 cafce25 Это не utf8, но он хочет преобразовать для передачи include_bytes Я прав?

kcbbcn otfemb 04.12.2022 11:15

Если это не так, то почему вы называете это std::str::from_utf8?

cafce25 04.12.2022 11:19

@cafce25 cafce25 Теперь я изменил его и удалил std::str::from_utf8 Но он не добавил изображение в приложение, почему? fn main() { let bytes = include_bytes! ("C:\Пользователи\Загрузки\cbiimage.png"); распечатать! ("{:?}" Байт) ; }

kcbbcn otfemb 04.12.2022 11:24

Опять же, НЕ вставляйте многострочный код в комментарии.

Finomnis 04.12.2022 12:09

Если вы хотите добавить к своему вопросу, вы можете отредактировать его и добавить тег, например EDIT: перед ним. Как в этом вопросе: stackoverflow.com/questions/74665076/…

Finomnis 04.12.2022 12:19
Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
3
15
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
static IMAGE: &'static [u8] = include_bytes!("C:\\Users\\Downloads\\cbimage.png");

fn main() {
    println!("Image: {:?}", IMAGE);
}

Хотя я рекомендую использовать путь относительно вашего исходного кода, например

static IMAGE: &'static [u8] = include_bytes!("../cbimage.png");

fn main() {
    println!("Image: {:?}", IMAGE);
}

И поместите cbimage.png рядом со своим Cargo.toml.

Другие вопросы по теме