Coding Guidelines
This document describes the coding guidelines for the Databend Rust codebase.
Code formatting
All code formatting is enforced with rustfmt with a project-specific configuration. Below is an example command:
$ make fmt
Code analysis
Clippy is used to catch common mistakes and is run as a part of continuous integration. Before submitting your code for review, you can run lint:
$ make lint
Code documentation
Any public fields, functions, and methods should be documented with Rustdoc.
Please follow the conventions as detailed below for modules, structs, enums, and functions. The single line is used as a preview when navigating Rustdoc. As an example, see the 'Structs' and 'Enums' sections in the collections Rustdoc.
/// [Single line] One line summary description
///
/// [Longer description] Multiple lines, inline code
/// examples, invariants, purpose, usage, etc.
[Attributes] If attributes exist, add after Rustdoc
Example below:
/// Represents (x, y) of a 2-dimensional grid
///
/// A line is defined by 2 instances.
/// A plane is defined by 3 instances.
#[repr(C)]
struct Point {
x: i32,
y: i32,
}
Testing
Unit tests
$ make unit-test
Stateless tests
$ make stateless-test