About This Role
Working with advanced cheminformatics software, the Rust Software Engineer will build robust, high-performance Rust components and translate complex scientific algorithms into safe, efficient, and well-tested code. This role involves integrating new Rust components with an established C++ codebase within a small, growing, and collaborative international team.
Responsibilities
- Design, build and maintain high-performance Rust libraries and services for cheminformatics applications
- Implement new cheminformatics algorithms specified by subject-matter experts (SMEs)
- Review algorithm specifications for feasibility and clarity before implementation
- Integrate Rust components with the existing C++ codebase through safe, well-designed FFI boundaries
- Act as a primary code reviewer, protecting the team’s architectural consistency and code quality
- Own the test strategy for your work, covering unit and integration tests, property-based tests, edge cases and regression protection
- Maintain Cargo workspaces, build tooling and related Linux infrastructure
- Mentor junior developers on idiomatic Rust, ownership and borrowing, clean code and architecture
- Work with colleagues in Glasgow, Germany and France
- Document your implementations clearly, including public API docs with rustdoc
Requirements
- Significant commercial Rust experience, ideally in performance-sensitive or systems-level work
- A deep understanding of Rust’s ownership model, lifetimes and type system, and how to design clean APIs around them
- An architectural mindset, using traits, generics and modular crate design to build maintainable, extensible systems
- Strong code review skills, giving thorough, constructive feedback and spotting subtle logic errors, unnecessary unsafe and design drift
- A solid understanding of concurrency in Rust, including Send and Sync, synchronisation primitives, and data-parallel libraries such as Rayon
- Experience writing and reviewing unsafe code responsibly, with clear safety invariants
- Familiarity with the Rust toolchain and quality tools: Cargo, Clippy, rustfmt, Miri and sanitisers
- Experience developing on Linux
Nice to have:
- Commercial C++ experience, and confidence working across a mixed Rust/C++ codebase
- Rust–C++ interoperability using tools such as cxx or bindgen
- Python bindings with PyO3 and maturin, plus Python testing with pytest
- Experience of AI-assisted development, such as using Claude Code and directing coding agents on architectural decisions
- Implementing algorithms from specifications, and reasoning about their efficiency and complexity