| <!--- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| # Example FFI Usage |
| |
| The purpose of these crates is to provide an example of how one can use the |
| DataFusion Foreign Function Interface (FFI). See [API Docs] for detailed |
| usage. |
| |
| This example is broken into three crates. |
| |
| - `ffi_module_interface` is a common library to be shared by both the module |
| to be loaded and the program that will load it. It defines how the module |
| is to be structured. |
| - `ffi_example_table_provider` creates a library to exposes the module. |
| - `ffi_module_loader` is an example program that loads the module, gets data |
| from it, and displays this data to the user. |
| |
| ## Building and running |
| |
| In order for the program to run successfully, the module to be loaded must be |
| built first. This example expects both the module and the program to be |
| built using the same build mode (debug or release). |
| |
| ```shell |
| cd ffi_example_table_provider |
| cargo build |
| cd ../ffi_module_loader |
| cargo run |
| ``` |
| |
| [api docs]: http://docs.rs/datafusion-ffi/latest |