[][src]Crate papyrus

Build Status Latest Version Rust Documentation codecov Rustc Version 1.42+

Papyrus - A rust REPL and script running tool.

See the rs docs and the guide. Look at progress and contribute on github.

papyrus=> 2+2
papyrus [out0]: 4

Papyrus is in active development, see changelog for updates.

Overview

Papyrus creates a Rust REPL in your terminal. Code can be typed in, line by line with feedback on the evaluation, or code can be injected via stdin handles. Each code snippet is evaluated on an expression based system, so terminating with a semi-colon requires more input.

Example

[lib] papyrus=> 2+2
papyrus [out0]: 4
[lib] papyrus=> println!("Hello, world!");
[lib] papyrus.> out0 * out0
Hello, world!
papyrus [out1]: 16
[lib] papyrus=> :help
help -- prints the help messages
cancel | c -- returns to the root class
exit -- sends the exit signal to end the interactive loop
Classes:
  edit -- Edit previous input
  mod -- Handle modules
Actions:
  mut -- Begin a mutable block of code
[lib] papyrus=> :exit
[lib] papyrus=> Thanks for using papyrus!

Installation

Papyrus can be installed from crates.io or building from source on github. The default installation feature set requires a nightly toolchain, but stable can be used with fewer features enabled.

To install with all features:

rustup toolchain add nightly
cargo +nightly install papyrus

To install on stable without racer completion:

cargo +stable install papyrus --no-default-features --features="format,runnable"

Requirements

Features

Papyrus has features sets:

  • format: format code snippets using rustfmt
  • racer-completion: enable code completion using racer. Requires a nightly compiler
  • runnable: papyrus can be run, without needing to manually handle repl states and output

All features are enabled by default.

Cargo

Papyrus leverages installed binaries of both cargo and rustc. This requirement may lift in the future but for now, any user wanting to use Papyrus will need an installation of Rust.

Re-exports

pub use cmdtree;
pub use racer;

Modules

cmds

Extendable commands for REPL.

code

Source file and crate contents.

compile

Pertains to compiling a working directory into a library, then executing a function in that library.

complete

Completion components and API, for aspects of papyrus.

fmt

Format rust code snippets using rustfmt.

input

Parsing of input.

linking

Linking an external crate and sharing data.

output

Reading and writing output.

prelude

Re-exports of most common types and modules.

repl

The REPL API.

run

Running the repl. Requires runnable feature.

Macros

repl

Build a repl instance with the default terminal. If a type is specfied (ie repl!(String)) then the repl will be bounded to use that data type. Otherwise the default () will be used.