diff --git a/.gitignore b/.gitignore
index 43d4cb86fb5649a8ff1f7efd0af3d8e6a092029c..74a4eebf561606c2b1f6c5eb9920967404350298 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,4 @@
 # ide folder & virtual environments
 .venv/
 .vscode
+target
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000000000000000000000000000000000000..cde8553b4d384a0de0f9965cac133a857a643ac0
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "mavlink_rust"
+version = "0.1.0"
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..ed99293d7611204fe59a63ffc96f3fb13ec62fe2
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "mavlink_rust"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000000000000000000000000000000000000..f328e4d9d04c31d0d70d16d21a07d1613be9d577
--- /dev/null
+++ b/build.rs
@@ -0,0 +1 @@
+fn main() {}
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}