Rust — использование библиотеки

Опубликовано: 22 Февраля, 2023

Rust — это молниеносно быстрый и экономичный статический компилируемый язык с богатой системой типов и моделью владения. Его можно использовать для поддержки критичных к производительности служб, гарантируя при этом безопасность памяти и потокобезопасность, позволяя разработчикам выполнять отладку во время компиляции. В Rust мы можем создавать библиотеки. Это можно сделать, создав библиотеку, а затем связав ее с ящиком.

Создание библиотеки Rust:

Шаг 1: Мы создаем файл с именем gfg.rs , содержащий содержимое нашей библиотеки.

Пример 1:

Rust




// Rust code for creating a library
pub fn pub_func() {
    println!("Inside public function");
}
 
fn pvt_func() {
    println!("Calling pvt function");
}
 
pub fn indirect_fn_access() {
    print!("Accessing indirect functions ");
 
    pvt_func();
}

Шаг 2: Для библиотек с префиксом «lib» мы переименовываем файл после объявления файлов ящика. Это разрешено компилятором rust (rustc), который позволяет нам передавать параметр –crate-name

Здесь мы передаем команды, используя опцию crate:

rustc –crate-type=lib gfg.rs

ls lib*

Шаг 3: Вышеупомянутые команды, как мы ясно видим, создают файл «library.rlib» , и все библиотеки имеют префикс «lib», и по умолчанию они называются в соответствии с их файлом создания. Имя по умолчанию переопределяется, как только мы передаем атрибут ящика.

Использование библиотеки в Rust:

Как только наша библиотека создана, мы можем использовать ее для компоновки новой библиотеки с помощью ящика и флага –extern, предоставленного компилятором rust. Как только мы его используем, элементы будут импортированы в модуль, имя которого совпадает с именем библиотеки, и мы можем ожидать, что модуль будет вести себя так же, как и другие модули.

Здесь мы создаем новый файл с именем executable.rs и внутри этого файла мы получаем доступ к публичной функции и функции косвенного_fun_access следующим образом:

Пример 2:

Rust




// Rust code for use a Library
fn main() {
    gfg::pub_func();
 
    gfg::indirect_fn_access();
}

Структура файла:

Теперь, чтобы выполнить модуль, мы используем команду:

 rustc executable.rs --extern
 gfg=libgfg.rlib --edition=2018
 && ./executable

Здесь библиотека — libgfg.rlib, а исполняемый файл — executable.rs.

Выход: