Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Python Tutorial
  • Interview Questions
  • Python Quiz
  • Python Glossary
  • Python Projects
  • Practice Python
  • Data Science With Python
  • Python Web Dev
  • DSA with Python
  • Python OOPs
Open In App
Next Article:
Bridging the Gap Between Rust and Python with PyO3
Next article icon

Bridging the Gap Between Rust and Python with PyO3

Last Updated : 28 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In this article, we will explore how PyO3 bridges the gap between Rust and Python. Each programming language has its unique strengths and weaknesses. Rust is favored by system developers for its exceptional speed, memory protection, and low-level capabilities. Python, on the other hand, stands out for its extensive library support, readability, and versatility, making it popular for tasks like data analytics, scripting, and web development.

The idea of combining Python's flexibility with Rust's power is intriguing. Enter PyO3, a powerful tool designed to seamlessly connect Python and the Rust programming language. PyO3 serves as a remarkable bridge between these two languages

What is Rust?

Rust is a programming language known for its exceptional speed, performance efficiency, and robust memory protection policies. It is highly favored among system developers due to its unique features:

  • Memory Protection: Rust prevents common memory-related issues like null pointer dereferencing and buffer overflows, making it a safe choice for systems programming.
  • Concurrency: Rust simplifies writing safe and concurrent code with features like ownership and the async/await model.
  • Performance: Rust offers low-level control, allowing developers to write highly optimized programs, making it suitable for game development, system programming, and other performance-critical applications.

What is Python?

Python, on the other hand, is renowned for its versatility, simplicity, and extensive library ecosystem, It's widely used for various purposes, including Data Analytics, Scripting, and Web Development, thanks to:

  • Readability: Python's clean and easy-to-read syntax promotes maintainable code.
  • Rich Ecosystem: Python boasts a vast collection of libraries and frameworks for fields such as machine learning, data science, and web development.
  • Rapid Prototyping: Python's interpreted environment allows developers to experiment and develop quickly.

Bridging the Gap Between Rust and Python with PyO3

This is the process of seamlessly integrating Rust and Python using the PyO3 library. PyO3 is a Rust Library designed to bridge the gap between Rust and Python seamlessly. It enables developers to combine the strengths of both languages, offering:

  • Performance: PyO3 leverages Rust's speed and efficiency to create high-performance Python extensions.
  • Integration: It allows Rust code to be easily integrated into Python applications without complex boilerplates.
  • Abstraction: PyO3 abstracts the low-level details of Python's API, simplifying interaction between Python and Rust.
  • Interoperability: Data can be passed between Rust and Python with minimal overhead.

With PyO3, you can optimize Python code, work with Rust libraries, and build cross-platform applications that harness the power of both Rust and Python.

Installation and Setup

Step 1: Install Rust

If you haven't already, you need to install Rust. You can do this using `rustup`, a Rust toolchain installer. Follow the instructions at https://www.rust-lang.org/tools/install to get Rust installed on your system.

Step2: Create a New Rust Project

Start by creating a new Rust project or use an existing one. You can create a new Rust project with the following command:

 cargo new my_pyo3_project
cd my_pyo3_project

Step 3: Edit `Cargo.toml`

Open the `Cargo.toml` file in your project folder and add the `pyo3` crate as a dependency:

[dependencies] 
pyo3 = { version = "0.15", features = ["extension-module"] }

Make sure to use the latest version of PyO3.
dfkjngkj


Step 5: Create a Python Module

Create a Python module that you want to expose to Python from Rust. For example, create a file named `mymodule.py`:

Python3
def greet(name):     return f"Hello, {name}!" 


Step 5: Write Rust Code

Create a Rust source file (e.g., `lib.rs`) inside the `src` directory of your Rust project. Here's an example Rust code that exposes the `greet` function from Python:

Rust
   use pyo3::prelude::*;     #[pyfunction]    fn greet(name: &str) -> String {        format!("Hello, {}!", name)    }     #[pymodule]    fn mymodule(py: Python, m: &PyModule) -> PyResult<()> {        m.add_function(wrap_pyfunction!(greet, m)?)?;        Ok(())    } 

Step 6: Build the Python Module

Build the Python module by running the following command in your Rust project directory:

cargo build --release

This will generate a shared library file (`.so` on Linux, `.dll` on Windows, or `.dylib` on macOS) in the `target/release` directory.

Step 7: Test your Python Module

You can now test your Python module by importing it into Python:

Python3
import mymodule  result = mymodule.greet("Alice") print(result)   # Output: Hello, Alice! 
image-(1)
test.py

Example

Here is a example of how to use PyO3 to write Rust code callable from Python. In both Rust and Python, the code defines a function for addition and then demonstrates how to use that function to perform an addition operation, storing and printing the result.

Rust Code: This Rust code defines a function add that adds two integers and returns the result. In the main function, it demonstrates the usage of the add function by adding 5 and 7, storing the result in a variable, and printing the result to the console. When you run this program, it will output "The result is: 12" to the console.

Rust
fn add(a: i32, b: i32) -> i32 {     a + b }  fn main() {     // Example usage of the 'add' function.     let result = add(5, 7);     println!("The result is: {}", result); } 

Python Code: So, this code imports a module, calls a function from that module to perform an addition operation, and then prints the result to the console. It's a basic example of how you can organize your Python code into modules and use functions defined within those modules in other parts of your program.

Python3
import mymodule  result = mymodule.add(5, 3) print(result)  # Output: 8 


image-(2)
basic function

This is just a basic example to get you started with PyO3. You can create more complex modules and data structures as needed for your specific project. Make sure to refer to the PyO3 documentation (https://pyo3.rs/) for more in-depth information and advanced usage.

Advantages of PyO3

PyO3 offers enumerable advantages:

  • Seamless Integration: PyO3 allows easy integration of Rust code into Python applications without complex boilerplate.
  • Performance: Leveraging Rust's performance benefits, PyO3 creates high-performance Python extensions.
  • Abstraction: PyO3 abstracts the low-level details of Python's API, making it easier to work with Python and Rust.
  • Interoperability: PyO3 can pass data between Rust and Python with minimal overhead

Use Cases of PyO3

PyO3 is suitable for a wide range of use cases, including:

  • Performance Optimization: Speed up the performance of Python code by implementing it in Rust.
  • Data Science: Uses Rust libraries for data processing and analysis within Python data pipelines.
  • Embedding in Applications: Creates high-performance extensions for Python-based applications.
  • Cross-platform/language Development: Builds multi-platform applications that combine the strengths of both Rust and Python.

Conclusion

In conclusion, PyO3 bridges the gap between Rust and Python, offering a powerful toolset for developers. Whether we need to optimize Python programs, integrate Rust and Python seamlessly, or build high-performance extensions, PyO3 is a valuable addition to our toolbox. So, why not give it a try and unlock the full potential of both Rust and Python in our projects.


Next Article
Bridging the Gap Between Rust and Python with PyO3

V

vikasharma005
Improve
Article Tags :
  • Technical Scripter
  • Python
  • Rust
  • Python-Library
  • Rust-basics
Practice Tags :
  • python

Similar Reads

    Important differences between Python 2.x and Python 3.x with examples
    In this article, we will see some important differences between Python 2.x and Python 3.x with the help of some examples. Differences between Python 2.x and Python 3.x Here, we will see the differences in the following libraries and modules: Division operatorprint functionUnicodexrangeError Handling
    5 min read
    Comparing Old-Style and New-Style Classes in Python
    In Python, the difference between old-style and new-style classes is based on the inheritance from the built-in object class. This distinction was introduced in Python 2.x and was fully adopted in Python 3.x, where all classes are new-style classes. In this article, we will see the difference betwee
    4 min read
    The Future of Rust in 2025 [Top Trends and Predictions]
    Rust has been established as a new rival in the ever-changing world of programming languages. It is an innovative language that is rapidly making its presence felt by attracting developers with its astonishing performance, strong memory safety, and dynamic concurrent features.But what actually happe
    9 min read
    Rust: The Programming Language of the Future?
    In the ever-changing landscape of programming languages, Rust has positioned itself as a strong candidate to be crowned “Programming Language of the Future.” Developed by Mozilla in 2006 and currently maintained by the Rust Foundation, Rust has drawn significant attention and uptake due to its uniqu
    7 min read
    What is Python? Its Uses and Applications
    Python is a programming language that is interpreted, object-oriented, and considered to be high-level. What is Python? Python is one of the easiest yet most useful programming languages and is widely used in the software industry. People use Python for Competitive Programming, Web Development, and
    8 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences