Существует два типа библиотечных модулей Rust: один создает библиотеки Rust, а другой создает C-совместимые библиотеки. Кроме того, для целей системы сборки вы можете рассматривать процедурные макросы Rust ( proc-macros
) как особый тип библиотеки.
ржавчина_библиотека
rust_library
создает библиотеки Rust для использования другими модулями Rust.
В дополнение к вариантам _host
в библиотеках Rust есть типы модулей, которые управляют доступной связью.
Тип модуля библиотеки Rust | Определение |
---|---|
ржавчина_библиотека | Предоставляет оба варианта библиотеки: rlib и dylib . AOSP рекомендует этот тип модуля для библиотек Rust, поскольку он позволяет модулям работать правильно, если они указаны как зависимости в свойстве rustlibs . |
ржавчина_library_rlib | Предоставляет только вариант библиотеки Rust rlib ; Модули, предоставляющие только варианты rlib , не могут гарантированно работать со rustlibs . |
ржавчина_library_dylib | Предоставляет только вариант библиотеки Rust dylib ; Модули, предоставляющие только варианты dylib , не могут гарантированно работать со rustlibs . |
ржавчина_ффи
Модуль rust_ffi
создает C-совместимые библиотеки для взаимодействия с модулями CC.
В дополнение к вариантам _host
библиотеки Rust FFI имеют типы модулей, которые управляют доступной связью, как показано в следующей таблице.
Тип модуля библиотеки Rust FFI | Определение |
---|---|
ржавчина_ффи | Предоставляет оба варианта библиотеки C: статический и общий. |
ржавчина_ffi_shared | Предоставляет только вариант общей библиотеки C. |
ржавчина_ffi_static | Предоставляет только вариант статической библиотеки C. |
Базовый пример использования rust_ffi
для вызова Rust из C см. на странице Шаблоны Android Rust .
Для получения информации о более расширенном использовании посетите официальную документацию Rust .
ржавчина_proc_macro
Процедурные макросы Rust (proc-macros) могут быть полезны для расширения возможностей компилятора для выполнения преобразований исходного кода или предоставления новых атрибутов. Более подробную информацию можно найти на странице «Процедурные макросы» официальной документации Rust.
Для системы сборки модуль rust_proc_macro
работает аналогично модулям rust_library
. Для модулей, которые зависят от rust_proc_macros
, добавьте имя модуля в свойство proc_macros
.
Поскольку proc_macros
являются плагинами компилятора, они обязательно нацелены на хост и не создают никакого кода, который мог бы работать на устройстве.
Примечательные свойства библиотеки Rust
Свойства, определенные в таблице ниже, дополняют важные общие свойства , применимые ко всем модулям. Они либо особенно важны для модулей библиотеки Rust, либо демонстрируют уникальное поведение, специфичное для типа rust_library
.
Свойства библиотеки Rust | Определение |
---|---|
основа / имя | Свойство stem управляет именем выходного файла библиотеки, которое в противном случае по умолчанию имеет значение name . Компилятор Rust предъявляет определенные требования к именам файлов библиотеки, и в результате система сборки применяет эти требования, чтобы избежать проблем с компиляцией. Имя выходного файла должно соответствовать формату |
имя_ящика | Это обязательное свойство для модулей, создающих библиотеки; он также имеет отношение к имени выходного файла. (См. определение stem .) |
Export_include_dirs | Для модулей rust_ffi это свойство определяет список строк, представляющих относительные пути включения: пути, которые содержат заголовки, которые могут использовать зависимые модули cc . |
Связь с Rust_library или Rust_ffi
По умолчанию модули библиотеки Rust, предназначенные для устройств, всегда динамически связываются с libstd
. Однако хост-модули всегда статически связаны с libstd
.
Связь, используемая для зависимостей rustlibs
зависит от предпочтений связи корневого модуля. (Например, rust_binary
с prefer_rlib: true
будет использовать варианты библиотеки Rust, которые связывают rustlibs
как rlibs
.)
Чтобы обеспечить создание модулей корневых зависимостей, которые не полагаются на какие-либо динамические библиотеки Rust (например, статические исполняемые файлы), rlibs
предоставляет как динамические, так и статические варианты связывания libstd
. Правильный вариант автоматически связывается Сунгом.
Существует два типа библиотечных модулей Rust: один создает библиотеки Rust, а другой создает C-совместимые библиотеки. Кроме того, для целей системы сборки вы можете рассматривать процедурные макросы Rust ( proc-macros
) как особый тип библиотеки.
ржавчина_библиотека
rust_library
создает библиотеки Rust для использования другими модулями Rust.
В дополнение к вариантам _host
в библиотеках Rust есть типы модулей, которые управляют доступной связью.
Тип модуля библиотеки Rust | Определение |
---|---|
ржавчина_библиотека | Предоставляет оба варианта библиотеки: rlib и dylib . AOSP рекомендует этот тип модуля для библиотек Rust, поскольку он позволяет модулям работать правильно, если они указаны как зависимости в свойстве rustlibs . |
ржавчина_library_rlib | Предоставляет только вариант rlib библиотеки Rust; Модули, предоставляющие только варианты rlib , не могут гарантировать работу со rustlibs . |
ржавчина_library_dylib | Предоставляет только вариант библиотеки Rust dylib ; модули, предоставляющие только варианты dylib , не могут гарантированно работать со свойством rustlibs . |
ржавчина_ффи
rust_ffi
создает C-совместимые библиотеки для взаимодействия с модулями CC.
В дополнение к вариантам _host
библиотеки Rust FFI имеют типы модулей, которые управляют доступной связью, как показано в следующей таблице.
Тип модуля библиотеки Rust FFI | Определение |
---|---|
ржавчина_ффи | Предоставляет оба варианта библиотеки C: статический и общий. |
ржавчина_ffi_shared | Предоставляет только вариант общей библиотеки C. |
ржавчина_ffi_static | Предоставляет только вариант статической библиотеки C. |
Базовый пример использования rust_ffi
для вызова Rust из C см. на странице Шаблоны Android Rust .
Для получения информации о более расширенном использовании посетите официальную документацию Rust .
ржавчина_proc_macro
Процедурные макросы Rust (proc-macros) могут быть полезны для расширения возможностей компилятора для выполнения преобразований исходного кода или предоставления новых атрибутов. Более подробную информацию можно найти на странице «Процедурные макросы» официальной документации Rust.
Для системы сборки модуль rust_proc_macro
работает аналогично модулям rust_library
. Для модулей, которые зависят от rust_proc_macros
, добавьте имя модуля в свойство proc_macros
.
Поскольку proc_macros
являются плагинами компилятора, они обязательно нацелены на хост и не создают никакого кода, который мог бы работать на устройстве.
Примечательные свойства библиотеки Rust
Свойства, определенные в таблице ниже, дополняют важные общие свойства , применимые ко всем модулям. Они либо особенно важны для модулей библиотеки Rust, либо демонстрируют уникальное поведение, специфичное для типа rust_library
.
Свойства библиотеки Rust | Определение |
---|---|
основа / имя | Свойство stem управляет именем выходного файла библиотеки, которое в противном случае по умолчанию имеет значение name . Компилятор Rust предъявляет определенные требования к именам файлов библиотеки, и в результате система сборки применяет эти требования, чтобы избежать проблем с компиляцией. Имя выходного файла должно соответствовать формату |
имя_ящика | Это обязательное свойство для модулей, создающих библиотеки; он также имеет отношение к имени выходного файла. (См. определение stem .) |
Export_include_dirs | Для модулей rust_ffi это свойство определяет список строк, представляющих относительные пути включения: пути, которые содержат заголовки, которые могут использовать зависимые модули cc . |
Связь с Rust_library или Rust_ffi
По умолчанию модули библиотеки Rust, предназначенные для устройств, всегда динамически связываются с libstd
. Однако хост-модули всегда статически связаны с libstd
.
Связь, используемая для зависимостей rustlibs
зависит от предпочтений связи корневого модуля. (Например, rust_binary
с prefer_rlib: true
будет использовать варианты библиотеки Rust, которые связывают rustlibs
как rlibs
.)
Чтобы обеспечить создание модулей корневых зависимостей, которые не полагаются на какие-либо динамические библиотеки Rust (например, статические исполняемые файлы), rlibs
предоставляет как динамические, так и статические варианты связывания libstd
. Правильный вариант автоматически связывается Сунгом.
Существует два типа библиотечных модулей Rust: один создает библиотеки Rust, а другой создает C-совместимые библиотеки. Кроме того, для целей системы сборки вы можете рассматривать процедурные макросы Rust ( proc-macros
) как особый тип библиотеки.
ржавчина_библиотека
rust_library
создает библиотеки Rust для использования другими модулями Rust.
В дополнение к вариантам _host
в библиотеках Rust есть типы модулей, которые управляют доступной связью.
Тип модуля библиотеки Rust | Определение |
---|---|
ржавчина_библиотека | Предоставляет оба варианта библиотеки: rlib и dylib . AOSP рекомендует этот тип модуля для библиотек Rust, поскольку он позволяет модулям работать правильно, если они указаны как зависимости в свойстве rustlibs . |
ржавчина_library_rlib | Предоставляет только вариант rlib библиотеки Rust; Модули, предоставляющие только варианты rlib , не могут гарантировать работу со rustlibs . |
ржавчина_library_dylib | Предоставляет только вариант библиотеки Rust dylib ; Модули, предоставляющие только варианты dylib , не могут гарантированно работать со rustlibs . |
ржавчина_ффи
rust_ffi
создает C-совместимые библиотеки для взаимодействия с модулями CC.
В дополнение к вариантам _host
библиотеки Rust FFI имеют типы модулей, которые управляют доступной связью, как показано в следующей таблице.
Тип модуля библиотеки Rust FFI | Определение |
---|---|
ржавчина_ффи | Предоставляет оба варианта библиотеки C: статический и общий. |
ржавчина_ffi_shared | Предоставляет только вариант общей библиотеки C. |
ржавчина_ffi_static | Предоставляет только вариант статической библиотеки C. |
Базовый пример использования rust_ffi
для вызова Rust из C см. на странице Шаблоны Android Rust .
Для получения информации о более расширенном использовании посетите официальную документацию Rust .
ржавчина_proc_macro
Процедурные макросы Rust (proc-macros) могут быть полезны для расширения возможностей компилятора для выполнения преобразований исходного кода или предоставления новых атрибутов. Более подробную информацию можно найти на странице «Процедурные макросы» официальной документации Rust.
Для системы сборки rust_proc_macro
работает аналогично rust_library
. Для модулей, которые зависят от rust_proc_macros
, добавьте имя модуля в свойство proc_macros
.
Поскольку proc_macros
являются плагинами компилятора, они обязательно нацелены на хост и не создают никакого кода, который мог бы работать на устройстве.
Примечательные свойства библиотеки Rust
Свойства, определенные в таблице ниже, дополняют важные общие свойства , применимые ко всем модулям. Они либо особенно важны для модулей библиотеки Rust, либо демонстрируют уникальное поведение, специфичное для типа rust_library
.
Свойства библиотеки Rust | Определение |
---|---|
основа / имя | Свойство stem управляет именем выходного файла библиотеки, которое в противном случае по умолчанию имеет значение name . Компилятор Rust предъявляет определенные требования к именам файлов библиотеки, и в результате система сборки применяет эти требования, чтобы избежать проблем с компиляцией. Имя выходного файла должно соответствовать формату |
имя_ящика | Это обязательное свойство для модулей, создающих библиотеки; он также имеет отношение к имени выходного файла. (См. определение stem .) |
Export_include_dirs | Для модулей rust_ffi это свойство определяет список строк, представляющих относительные пути включения: пути, которые содержат заголовки, которые могут использовать зависимые модули cc . |
Связь с Rust_library или Rust_ffi
По умолчанию модули библиотеки Rust, предназначенные для устройств, всегда динамически связываются с libstd
. Однако хост-модули всегда статически связаны с libstd
.
Связь, используемая для зависимостей rustlibs
зависит от предпочтений связи корневого модуля. (Например, rust_binary
с prefer_rlib: true
будет использовать варианты библиотеки Rust, которые связывают rustlibs
как rlibs
.)
Чтобы обеспечить создание модулей корневых зависимостей, которые не полагаются на какие-либо динамические библиотеки Rust (например, статические исполняемые файлы), rlibs
предоставляет как динамические, так и статические варианты связывания libstd
. Правильный вариант автоматически связывается Сунгом.