1#![forbid(unsafe_code)]
2#![warn(clippy::all, clippy::pedantic)]
3
4mod accuracy;
5#[cfg(feature = "scan")]
6mod block;
7mod canonical;
8mod cluster;
9mod config;
10mod detector;
11mod error;
12mod fast_hash;
13mod fingerprint;
14#[cfg(feature = "scan")]
15mod fragment;
16mod index;
17mod model;
18pub mod output;
19#[cfg(feature = "scan")]
20mod repository;
21mod token;
22mod verify;
23
24pub use accuracy::{AccuracyCounts, AccuracyGate, AccuracyReport, OracleLocation, OraclePair};
25pub use cluster::families_for_pairs;
26pub use config::CloneConfig;
27pub use detector::CloneDetector;
28pub use error::{CloneError, Result};
29pub use model::{
30 CloneEvidence, CloneFamily, CloneKind, CloneLocation, ClonePair, CloneReport, CloneStatistics,
31 DetectionMode, Language, Similarity, SourceFragment, SourceSpan,
32};
33#[cfg(feature = "scan")]
34pub use repository::{RepositoryCloneDetector, RepositoryOptions};
35
36pub trait SemanticCandidateProvider {
42 fn candidates(&self, fragment: &SourceFragment, limit: usize) -> Result<Vec<String>>;
49}