quil_rs/lib.rs
1// Copyright 2021 Rigetti Computing
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15//! Welcome to the Rust implementation of the
16//! [Quil quantum programming language](https://github.com/quil-lang/quil).
17//!
18//! Within this crate you'll find:
19//!
20//! * Builder utilities for Quil [programs], [instructions], and [expressions]
21//! * A [parser] and [serializer] for converting Quil to and from text strings
22//! * A [constructor for timing graphs], for understanding and debugging Quil-T
23//! pulse control programs
24//!
25//! This crate is still early in its development and does not fully support all
26//! Quil features, nor claim a stable API. Prior to `v1.0`, minor-version changes
27//! are considered breaking changes. Please pin your versions when needed, and
28//! closely follow the
29//! [changelog](https://github.com/rigetti/quil-rust/releases) when upgrading.
30//!
31//! [constructor for timing graphs]: crate::program::graph::ScheduledProgram#method.get_dot_format
32//! [expressions]: crate::expression::Expression
33//! [instructions]: crate::instruction::Instruction
34//! [parser]: crate::program::Program#method.from_str
35//! [programs]: crate::program::Program
36//! [serializer]: crate::program::Program#method.to_string
37
38pub mod expression;
39mod hash;
40pub mod instruction;
41mod macros;
42pub(crate) mod parser;
43pub mod program;
44pub mod quil;
45pub mod reserved;
46pub mod units;
47pub mod validation;
48pub mod waveform;
49
50pub use program::Program;